[英]Python Regex: Using a lookahead
我正在嘗試檢測以下類型的文本,以便將其從文本中刪除:
BOLD:Parshat NoachBOLD:
BOLD:Parshat Lech LechaBOLD:
BOLD:Parshat VayeraBOLD
BOLD:Parshat Sh’miniBOLD:
但這只是為了捕獲這一部分:
BOLD:Parshat Noach
BOLD:Parshat Lech Lecha
BOLD:Parshat Vayera
BOLD:Parshat Sh’mini
我想使用超前使用此正則表達式:
re.sub(r"BOLD:Parshat .*?(?=(:BOLD))","",comment) #tried lookahead with and without parens
但這似乎並沒有發現它們。 可能是什么問題? 文本后跟希伯來語片段,不確定是否是引起問題的原因。
請注意,這些句段嵌入在不同行的中間,如前所述,后面是希伯來語摘要。
在python中,您可以執行以下操作:
str = re.sub(r'BOLD:?$', '', str, 0, re.MULTILINE)
這將刪除每行末尾的BOLD
以及可選的:
。
編輯:如果此BOLD:
術語不總是在行尾,則可以使用:
>>> print re.sub(r'\b(BOLD:.*)BOLD:?', r'\1', str)
BOLD:Parshat Noach
BOLD:Parshat Lech Lecha
BOLD:Parshat Vayera
BOLD:Parshat Sh’mini
您不需要環顧四周,只需使用捕獲組並re.MULTILINE
標志即可匹配多行文本。
In [8]: s = """BOLD:Parshat NoachBOLD:
...: BOLD:Parshat Lech LechaBOLD:
...: BOLD:Parshat VayeraBOLD
...: BOLD:Parshat Sh’miniBOLD:"""
In [9]: re.findall(r'^(BOLD.*)BOLD:?$', s, re.MULTILINE)
Out[9]:
['BOLD:Parshat Noach',
'BOLD:Parshat Lech Lecha',
'BOLD:Parshat Vayera',
'BOLD:Parshat Sh’mini']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.