C# Regex group don';我没有弄到所有的绳子

C# Regex group don';我没有弄到所有的绳子,c#,regex,C#,Regex,我创建了这个正则表达式: #define[\s]{1,}(?<name>[a-zA-Z0-9_$]){1,}[\s]{1,}(?<value>[a-zA-Z0-9_$\s()={},;.?:]){1,} 字符串: #define MAX_ARENE 10123456 如何获取组中的所有字符串而不仅仅是最后一个字符 无论如何,如果你需要,这是我的C代码: p.S调试代码 我使用这个在线工具来测试正则表达式,但在执行此操作时,MessageBo

我创建了这个正则表达式:

#define[\s]{1,}(?<name>[a-zA-Z0-9_$]){1,}[\s]{1,}(?<value>[a-zA-Z0-9_$\s()={},;.?:]){1,}
字符串:

#define MAX_ARENE               10123456
如何获取组中的所有字符串而不仅仅是最后一个字符

无论如何,如果你需要,这是我的C代码:

p.S调试代码

我使用这个在线工具来测试正则表达式,但在执行此操作时,MessageBox中也会出现相同的结果

(?<name>[a-zA-Z0-9_$]){1,}
(?[a-zA-Z0-9_$]){1,}
您正在重复捕获组本身(与单个字符匹配),从而在下一次重复时覆盖每个字符匹配结果。你想用

(?<name>[a-zA-Z0-9_$]+)
(?[a-zA-Z0-9_$]+)
不要忘记对
值执行同样的操作
;另外,
+
表示“一个或多个”,因此使用它代替
{1,}

[\s]
也是多余的-
\s
就足够了


最后,我认为使用
match.Groups[n].Value
比使用
match.Groups[n].ToString()

定义\s+(?[a-zA-Z0-9_$]+)\s+(?[a-zA-Z0-9_$\s()={},;。:]+)更改为此。谢谢,现在可以了。所以如果我像([A-Z]{1,32}那样覆盖每一个字符,但是如果我这样做([A-Z]{1,32})可以吗?@Marclopezacierno:没错。谢谢!存在一种“快速方式”来包含从a-Z到~-^的所有字符?我指的是字符串中可能包含的所有字符,而不是([a-zA-Z0-9_$\s()={},;.?:“”-^!~]+)点匹配除
\n
之外的任何字符。因此,
(?。+)
匹配整个(剩余的)字符串/行。
(?<name>[a-zA-Z0-9_$]){1,}
(?<name>[a-zA-Z0-9_$]+)