簡體   English   中英

Python正則表達式在多行字符串變量中搜索子字符串

[英]Python regex to search substring in multiline string variable

我正在嘗試在多行字符串變量中搜索一組單詞。 我可以這樣做

>>> test_1 = """--Comment
... /*Comment*/
... MERGE fhkjfsk lkfjs;lfks;f
... hdkjdkd
... fjlkf
... """
>>> m = re.search(r"(insert|merge|update|delete)\s*", test_1, re.IGNORECASE)
>>> print(m)
<_sre.SRE_Match object; span=(22, 28), match='MERGE '>

但我只想匹配那些不以“--”或“/*”開頭的行中的單詞。 所以我不希望以下匹配:

>>> test_1 = """--Comment
... /*Comment*/
... --MERGE fhkjfsk lkfjs;lfks;f
... hdkjdkd
... fjlkf
... """
>>> m = re.search(r"(insert|merge|update|delete)\s*", test_1, re.IGNORECASE)
>>> print(m)
<_sre.SRE_Match object; span=(24, 30), match='MERGE '>

這就是我無法上班的原因。 我努力了:

>>> test_1 = """--Comment
... /*Comment*/
... --MERGE fhkjfsk lkfjs;lfks;f
... INSERT fhskjfsf
... gfdsjhs
... """
>>> m = re.search(r"^(?!--)(insert|merge|update|delete)\s*", test_1, re.IGNORECASE)
>>> print(m)
None
>>>

我想我需要兩個括號之間的東西(?!--)(insert|merge|update|delete)並嘗試添加

.+ 喜歡(?!--).+(insert|merge|update|delete)

\s* 喜歡(?!--)\s*(insert|merge|update|delete)

. (?!--).(insert|merge|update|delete)

.* 喜歡(?!--).*(insert|merge|update|delete)但它沒有幫助。

任何有關如何使這項工作的建議將不勝感激。

正則表達式很好,但^僅匹配整個字符串的開頭。 您應該使用re.MULTILINE使其匹配行的開頭。

re.search(r"^(?!--)(insert|merge|update|delete)\s*", test_1, re.IGNORECASE | re.MULTILINE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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