Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何匹配正则表达式避免括号内的括号_C#_Regex - Fatal编程技术网

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(“)
。对于我的案例,我认为这是一个简单的解决方案,尽管这不是完美的解决方案。也许在我未来的发展中,这种情况会存在。如果你有其他的解决方案。请写在这里。注意。添加了一个稍微更健壮的解决方案。:)