我想制定一个RegEx来找到这样的模式:
()()(x) 要么 ( ) (X) ( ) 要么 (x)()()
在单词中:找到三个打开的近括号,其中一个位于其中一个的中间。我可以做三个正则表达式模式,不需要一个一个。
这将代表操作机器,备用机器和维护机器。所以,我正在寻找3种不同的Regex公式,以找到每种模式。我做了一些改进,但没有做到这么远。 我尝试了什么:
\([^\(\r\n]*\)*\([^\(\r\n]*\)*\([^\(\r\n]*\)
\([^\(\r\n]\) \([^\(\r\n]*\) \([^\(\r\n]*\)
但是没有抓住我所有的困难。
我做了一些"测试用例":
aaaaaaaaaa()xsadasds(X)dsadasdas()dsdadas
()()(x)
(y) () ()
( ) (duo) ( )
( ) (x ) ( )
()()()
()dasdsa()dasdas()
(kwabanga)()()
我希望在以下模式中找到,即分别具有匹配:
()(x)() => MATCH aaaaaaaaaa()xsadasds(X)dsadasdas()dsdadas
()()(x) => MATCH ()()(x)
(x)()() => MATCH (y) () ()
()(x)() => MATCH ( ) (ANYTHING) ( )
()(x)() => MATCH ( ) (x ) ( )
dont find anything
dont find anything
(x)()() => MATCH (kwabanga)()()
我清楚了吗?我不确定如何处理,因为我使用RegEx这样的n00b。
提前致谢!
答案 0 :(得分:1)
答案 1 :(得分:0)
如果你真的没有三个单独的正则表达式,你可以尝试这样的东西:
\(.+?\)\(.*?\)\(.*?\) # matches on (x)()()
\(.*?\)\(.+?\)\(.*?\) # matches on ()(x)()
\(.*?\)\(.*?\)\(.+?\) # matches on ()()(x)