我试图从字符串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"
谁能解释为什么一开始就有圆括号? :/
答案 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)
您的捕获组是(\(.*?)
,这是一对括号,用于创建捕获组,内容为\(.*?
- 匹配文字左括号和任何字符的非贪婪序列。
另请注意,模式中的.
字符与文字点不匹配,但任何字符,我指出这一点,因为目标字符串似乎包含点。