我有像这样的字符串表达式
CONTAIN("A(ASDFASDF)","MAKLOON") && !CONTAIN("THIS IS THE (STRING) ","MAKLON") && !CONTAIN("ASDFASDF","MAKLUN") && ("121"=="" || 121.00=="" || 121.0=="")
我想只匹配这样的结果:
1. CONTAIN("A(ASDFASDF)","MAKLOON")
2. CONTAIN("THIS IS THE (STRING) ","MAKLON")
3. CONTAIN("ASDFASDF","MAKLUN")
我试过这个正则表达式但匹配只有这个:
CONTAIN\(.*?\)
结果
1. CONTAIN("A(ASDFASDF)
2. CONTAIN("THIS IS THE (STRING)
3. CONTAIN("ASDFASDF","MAKLUN")
如何解决我的问题?感谢
答案 0 :(得分:0)
您可以尝试以下模式:CONTAIN\(.*?"\)
答案 1 :(得分:0)
这是一个略微增强的版本,它允许内部字符串具有括号。它也不完美,但可能更安全一些:
CONTAIN\(".*?", ?".*?"\)
简要说明:匹配CONTAIN(
,然后匹配任何字符,直到找到","
或", "
(可选空格,如果您找到?
永远不会有空间),然后再到任何角色,直到最后")
。 ?
之后的*
是必要的,以使其尽可能少地匹配。否则,.*
将尽可能匹配,从第一个CONTAIN
字符串开始。
除了匹配您在帖子中提到的内容外,还会匹配:
CONTAIN("HEL()LO",")WORLD(")
CONTAIN(")HELLO(",")WORLD(")
并且不会匹配这些无效的字符串,这些字符串与其他建议的解决方案相匹配:
CONTAIN("HELLO",")WORLD() // partial match
CONTAIN(")
CONTAIN(""")
我尝试做一些更复杂的正则表达式以匹配引号或括号的数量,但我认为您不需要这样的复杂性,除非您的字符串可能已转义引号,例如\"
或{{1} }。
如果你不会得到任何这些无效的字符串或奇怪的字符串,那么对于其他更简单的正则表达式,你可能已经足够了。
答案 2 :(得分:-1)
我认为您正在寻找的正则表达式为:(CONTAIN\(\".+\"\))
。通过包含\"
,您可以获得引号内的所有字符,而不是以')的第一个实例结束。