簡體   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