C# 正则表达式从字符串中获取值

C# 正则表达式从字符串中获取值,c#,regex,C#,Regex,我试图从字符串1-1:0.0.0(123123) 这是代码 string str = "\r\n1-1:0.0.0(123123)\r\n"; string patt = @"1-1:0.0.0(\(.*?)\)\s"; Match match = Regex.Match(str, patt,RegexOptions.IgnoreCase); string v = match.Groups[1].Value; 问题是我没有得到清晰的值=“(123123” 有人能解释一下为什么开头有圆括号吗?:

我试图从字符串
1-1:0.0.0(123123)
这是代码

string str = "\r\n1-1:0.0.0(123123)\r\n";
string patt = @"1-1:0.0.0(\(.*?)\)\s";
Match match = Regex.Match(str, patt,RegexOptions.IgnoreCase);
string v = match.Groups[1].Value;
问题是我没有得到清晰的值=
“(123123”


有人能解释一下为什么开头有圆括号吗?:/

括号的转义不正确

将图案更改为以下内容(请注意,反斜杠位于第一个开口的前面
):


转义字符
(\(
放错位置:

请尝试以下内容

string str = "\r\n1-1:0.0.0(123123)\r\n";
string patt = @"1-1:0.0.0\((.*?)\)\s";
Match match = Regex.Match(str, patt, RegexOptions.IgnoreCase);
string v = match.Groups[1].Value;
这会打印出来

123123

您的捕获组是
(\(.*)
,这是一对括号,用于创建捕获组,内容为
\(.*?
——匹配文字的左括号和任何字符的非贪婪序列


还要注意,模式中的
字符与文字点不匹配,而是与任何字符匹配,我指出这一点,因为目标字符串似乎包含点。

您的开头圆括号匹配
\(
位于捕获组的开头

\(
替换

还应将
0.0.0
替换为
0\.0\.0
,以便更好地测量

123123