Python正则表达式在多行字符串变量中搜索子字符串



我试图在多行字符串变量中搜索一组单词。我可以通过

>>> 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)之间添加一些东西,并尝试添加

。+ like(?!--).+(insert|merge|update|delete)

s* like(?!--)s*(insert|merge|update|delete)

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

。*喜欢(?!--).*(insert|merge|update|delete),但它没有帮助。

如果能提供一些建议,我将不胜感激。

正则表达式很好,但是^只匹配整个字符串的开头。你应该使用re.MULTILINE来匹配行首。

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

最新更新