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)
我正在尝试在多行字符串变量中搜索词组。我可以通过
>>> 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)