0

我试图从字符串中获取价值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"
有人可以解释为什么开头有圆括号吗?:/

4

4 回答 4

3

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

替换(\(\((

也替换0.0.00\.0\.0良好的措施。

于 2013-01-30T12:23:29.230 回答
2

括号的转义是不正确的。

将您的模式更改为以下内容(请注意,反斜杠位于第一个开头的前面():

@"1-1:0.0.0\((.*?)\)\s";
于 2013-01-30T12:21:51.260 回答
2

您的转义字符(\(放错了位置:

请尝试以下

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
于 2013-01-30T12:21:51.570 回答
1

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

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

于 2013-01-30T12:22:17.030 回答