Python重新匹配未打开括号,然后是字符串
我想使用python的Python重新匹配未打开括号,然后是字符串,python,regex,Python,Regex,我想使用python的re.search匹配以下模式: ((不是开括号,然后是1-3个空格)或(字符串的开头))然后(字符1或E)然后(任意数量的空格)然后(闭括号) 以下是我到目前为止的情况: re.search(r'((^\(\s{1,3})|^)[1tE]\s+\)', text) 要匹配示例吗 text = " E )" text = "1 )" 不想匹配的例子 text = "( 1 ) 考虑以下模式: ( (不是开括号,
re.search
匹配以下模式:
((不是开括号,然后是1-3个空格)或(字符串的开头))然后(字符1或E)然后(任意数量的空格)然后(闭括号)
以下是我到目前为止的情况:
re.search(r'((^\(\s{1,3})|^)[1tE]\s+\)', text)
要匹配示例吗
text = " E )"
text = "1 )"
不想匹配的例子
text = "( 1 )
考虑以下模式:
(
-(不是开括号,然后是1-3个空格)
[^(]\s{1,3}
-或
|
-(字符串的开头)
^
)
-(字符1或E)
[1E]
-(任意数量的空格)
\s*
-(右括号)
\)
(?:[^(]\s{1,3}|^)[1E]\s*\)
要匹配整个字符串,请添加锚定、^
和$
:
^(?:[^(]\s{1,3}|^[1E]\s*\)$
看
(?:…)
是非捕获组,如果将来需要访问其值,请使用捕获组
您可以使用详细的正则表达式表示法使其更具可读性和可维护性:
re.search(
r”“”
(?:
[^(]\s{1,3}#不是开括号,然后是1-3个空格
|#或
^#字符串的开头
)
[1E]#字符1或E
\s*#任意数量的空格
\)#关闭支架
""",
文本,
重复冗长
)
你说“非开括号”,但使用了与其匹配的\(
,为什么?尝试re.search(r'^(?[^(]\s{1,3})?[1tE]\s+\),text)
,请参见。这是否也匹配?%E)
嗨,我的解决方案对你有用吗?