簡體   English   中英

Python正則表達式:使用前瞻

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM