C# 如何匹配正则表达式避免括号内的括号
我有这样的字符串表达式C# 如何匹配正则表达式避免括号内的括号,c#,regex,C#,Regex,我有这样的字符串表达式 CONTAIN("A(ASDFASDF)","MAKLOON") && !CONTAIN("THIS IS THE (STRING) ","MAKLON") && !CONTAIN("ASDFASDF","MAKLUN") && ("121"=="" || 121.00=="" || 121.0=="") 我只想匹配如下结果: 1. CONTAIN("A(ASDFASDF)","MAKLOON") 2. CON
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")
如何解决我的问题?谢谢我想你要找的正则表达式应该是:
(包含\(\“+\”\)
。通过包含“”您可以在引号中获得所有字符,而不是以“')”的第一个实例结尾。您可以尝试以下模式:包含\(.*?)
这是一个稍微增强的版本,它允许内部字符串带有括号。它也不完美,但可能更安全:
CONTAIN\(".*?", ?".*?"\)
简要说明:它匹配包含(
,然后匹配任何字符,直到找到”、“
或”、“
(可选空格,如果永远不会有空格,请删除?
),然后再匹配任何字符,直到找到最后一个”)
。*
后面的?
必须使其尽可能少地匹配。否则,*
将尽可能多地匹配,从第一个到最后一个包含
字符串
除了匹配您在帖子中提到的内容外,它还将匹配:
CONTAIN("HEL()LO",")WORLD(")
CONTAIN(")HELLO(",")WORLD(")
并且将不匹配以下无效字符串,这些字符串由其他建议的解决方案匹配:
CONTAIN("HELLO",")WORLD() // partial match
CONTAIN(")
CONTAIN(""")
我尝试使用更复杂的正则表达式来匹配引号或括号的数量,但我认为您不需要这样的复杂性,除非您的字符串可能有转义引号,如\“
或”
如果您不会得到任何无效字符串或奇怪的字符串,那么使用另一个更简单的正则表达式就足够了。我尝试了这个方法,并使所有字符串完整,直到得到)
。我希望在lazy in regexRight中,+
将尽可能多地选择。你需要一个?
,谢谢。这是我的作品。。你能解释一下正则表达式模式中的“
是什么吗?我们将使用“)作为模式匹配的锚。注意,这对包含(“HELLO”),”.WORLD(“)
这样的字符串不起作用。会有“”
在要捕获的文本中?或者你100%确定他们总是以这两个字符结尾吗?例如:CONTAIN(“HELLO”,”)WORLD(“)
。对于我的案例,我认为这是一个简单的解决方案,尽管这不是完美的解决方案。也许在我未来的发展中,这种情况会存在。如果你有其他的解决方案。请写在这里。注意。添加了一个稍微更健壮的解决方案。:)