Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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# Regex忽略中带有特定字符的字符串_C#_.net_Regex - Fatal编程技术网

C# Regex忽略中带有特定字符的字符串

C# Regex忽略中带有特定字符的字符串,c#,.net,regex,C#,.net,Regex,我需要让我的正则表达式匹配字符串中有“(随机值)”的部分,除非它在该随机值中找到@,它应该忽略该部分 例如,我有这个字符串 string storeProcDefinition = @"TTTTT.TTTTTTTT (@pname nvarchar, @pdec decimal(18,5) = null, @pnum numeric(18, 10), @pint int = null) AS BEGIN SET NOCOUNT ON; SELECT TTT" 所以我想找到所有与本节中的“(任何

我需要让我的正则表达式匹配字符串中有“(随机值)”的部分,除非它在该随机值中找到@,它应该忽略该部分

例如,我有这个字符串

string storeProcDefinition = @"TTTTT.TTTTTTTT (@pname nvarchar, @pdec decimal(18,5) = null, @pnum numeric(18, 10), @pint int = null) AS BEGIN SET NOCOUNT ON; SELECT TTT"
所以我想找到所有与本节中的“(任何内容)”匹配的部分,如

(18,5)
(18, 10)
而不是

(@pname nvarchar, @pdec decimal(18,5)`
我的想法是检查字符串中的@符号,或者在找到新的(符号)时重新开始 但是Regex没有一个选项说不包含char afik

我有类似的东西

var matches = Regex.Matches(storeProcDefinition, @"\(^(?!\@)(.*?)\)" );
什么都不匹配

\([^@]*?\)
应该有用

说明:

\( // match a literal "("
[^@]*? // match any text except "@"...
\) //...up to the next ")" character

请注意,这不支持像
foo(bar())

这样的嵌套大括号。谢谢大家,我从一开始就用了一些类似的大括号,但后来用错了direction@AvinashRaj:我认为这无关紧要。如果输入包含嵌套大括号,两种模式都会出错,它们只是做得不同而已。。。(附言:更新演示以说明如何处理嵌套大括号)