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

时间:2013-01-30 12:19:01

标签: 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"
谁能解释为什么一开始就有圆括号? :/

4 个答案:

答案 0 :(得分:3)

您的首轮括号匹配\(里面您的捕获组(的开头。

(\(替换为\((

同时将0.0.0替换为0\.0\.0以获得良好的衡量标准。

答案 1 :(得分:2)

括号的转出不正确。

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

@"1-1:0.0.0\((.*?)\)\s";

答案 2 :(得分: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

答案 3 :(得分:1)

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

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