繁体   English   中英

正则表达式在正则表达式匹配项上方捕获2行

[英]Regex capture 2 lines above regex match

找到匹配nm(名词男性)和nf(名词女性)之后,需要帮助获取上述单词(ZYGOMA,ZOMA,ZYGMA)。 我已经尝试了多行和dotall等不同的标志,但是仍然没有运气获得上面的主要关键词。 任何帮助将不胜感激

import re


def main():
    mytext = open("m.txt")
    mypattern = re.compile('n. (m.|f.)')
    for line in mytext:
        match = re.search(mypattern, line)
        if match:
            print(match.group())

if __name__ == "__main__":
    main()

我用作示例的文本是:

齐格玛

nm T. d'Anatomie。 Os de la pommette de la joue。

佐玛

nm T. d'Anatomie。 Os de la pommette de la joue。

ZYGMA

nm T. d'Anatomie。 Os de la pommette de la joue。

我将如何解析主文件如下所示:

我将如何解析主文件如下所示

表示要搜索的单词大写:

import re

text = """
    ZYGOMA

    n. m. T. d'Anatomie . Os de la pommette de la joue.

    ZOMA

    n. m. T. d'Anatomie . Os de la pommette de la joue.

    ZYGMA

    n. m. T. d'Anatomie . Os de la pommette de la joue.

    A B C

    n. m. T. d'Anatomie . Os de la pommette de la joue.
"""

g = re.findall(r'([A-Z][A-Z ]*)\s+(?=n\. m|f)', text)
print(g)

将打印:

['ZYGOMA', 'ZOMA', 'ZYGMA', 'A B C']

对于Unicode大写单词,解决方案在这里: 用于Unicode大写单词的Python正则表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM