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

本文关键字:获取 字符串 正则表达式 | 更新日期: 2023-09-27 17:56:34

我试图从字符串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.0.0替换为0'.0'.0以更好地衡量。

括号

的转义不正确。

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

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

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

请尝试以下

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

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

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