正则表达式Python,匹配A和B之间的任何内容,除非C
关于正则表达式的问题。我想匹配以下模式:正则表达式Python,匹配A和B之间的任何内容,除非C,python,regex,Python,Regex,关于正则表达式的问题。我想匹配以下模式: A()()()(B) MATCH A()()(B) MATCH A()(B) MATCH A(B) MATCH 此外,如果括号中除了短语(否)之外还有任何内容,则该内容也应匹配: A(abc)(B) MATCH A()(def)(B) MATCH A()()(ghij)(B) MATCH A(klmn)(opq)()(B)
A()()()(B) MATCH
A()()(B) MATCH
A()(B) MATCH
A(B) MATCH
此外,如果括号中除了短语(否)之外还有任何内容,则该内容也应匹配:
A(abc)(B) MATCH
A()(def)(B) MATCH
A()()(ghij)(B) MATCH
A(klmn)(opq)()(B) MATCH
A(NO)(B) NO MATCH
A()()(NO)(B) NO MATCH
A(abc)(NO)(B) NO MATCH
但是,如果括号中没有某些内容,我不希望短语匹配:
Aabc(B) NO MATCH
A()defg()(B) NO MATCH
我有以下资料:
A\(.*\)*(?<!\(NO\))\(B\)
A\(.*)*(?
请帮助!您可以:
^A(\((?!NO\))[^)]*\))*\(B\)$
如果括号中有括号怎么办?括号可以嵌套吗?如果一组括号中除了NO
之外还有其他东西怎么办?括号内的括号可以,只要括号外没有东西。((fdsffds)dfdsfs)可以。((NO)如果在嵌套的括号中,例如(dsasad(NO))就可以了但是有(NO(dsadwsa))是不好的,你需要一个完全基于1个正则表达式的解决方案吗?如果你不需要递归,你可以只使用re
regex:。不需要。你有什么想法吗?啊,我想我有个主意,但是没有……类似于删除所有\([^()]*)\)
模式并检查否的内容和递归级别…如果需要在正则表达式中支持递归,则需要PyPi正则表达式模块。我不知道如何检查(否)
是否嵌套。如果我也想让它允许嵌套的括号呢?我如何确保最后一个括号中的是a(B)?@ben检查我的编辑。(B)
的匹配标记在末尾添加。。同样关于嵌套的()
,是否可以嵌套()
s?啊,太棒了!不可以这样嵌套((否))但不是(()否)。@ben这是我能得到的最接近的^A(\(((?!NO\)[^)]*(\([^)]*)*)*(B\)$
。正则表达式正在破坏嵌套。检查