正则表达式有助于从字符串中提取值

本文关键字:提取 字符串 有助于 正则表达式 | 更新日期: 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]。价值"。

感谢您的帮助!