正则表达式有助于从字符串中提取值
本文关键字:提取 字符串 有助于 正则表达式 | 更新日期: 2023-09-27 18:33:52
我不知道如何从字符串中提取具有特定匹配项的特定数字。
例:
string myString = "blah blah **[10]** blah **[20]** and some more blah **[30]**";
Regex myIDsReg = new Regex(@"'*'*'[('d+)']'*'*");
显然正则表达式是合理的。
Match myMatch = myIDsReg.Match(myString);
产生"**[10]**",但不产生其他任何内容。
我不知道如何获取具有以下值的数组:10、20、30
使用 Matches
而不是 Match
。
foreach (Match match in myIDsReg.Matches(myString))
{
// etc...
}
在线查看它的工作:ideone
我会这样做
string myString = "blah blah **[10]** blah **[20]** and some more blah **[30]**";
Regex myIDsReg = new Regex(@"'*'*'[('d+)']'*'*");
string[] regexResult = (from Match match in myIDsReg.Matches(myString) select match.Groups[1].Value).ToArray();
您也可以选择所需的输出
List<string> regexResult = (from Match match in myIDsReg.Matches(myString) select match.Groups[1].Value).ToList();
或
IEnumerable<string> regexResult = (from Match match in myIDsReg.Matches(myString) select match.Groups[1].Value);
我更喜欢后两者之一
Trikks想出了最好的答案。 我只需要稍微修改一下它以最适合我。
string myString = "blah blah **[10]** blah **[20]** and some more blah **[30]**";
Regex myIDsReg = new Regex(@"'*'*'[('d+)']'*'*");
string[] regexResult = (from Match match in myIDsReg.Matches(myString) select match.Groups[1].Value).ToArray();
我基本上替换了"选择匹配"。值"与"选择匹配。组[1]。价值"。
感谢您的帮助!