0

我想在我的正则表达式中定义一个变量,以便我可以简单地从匹配的输入字符串中提取其对应的值。

例如,我有这样的模式"\w*\s+\d+"

和一个输入字符串,如:"aaa 113"

当接收到匹配字符串时,我希望能够简单地提取与模式部分相对应的值,该部分表示"\d+"使用 C# 是数值

需要提及的是,我将表达式存储在数据库表中,并且我想从匹配的字符串中提取变量并将它们的值传递给动态检索的查询或存储过程。

我希望该过程完全与上下文无关,因为我们不在匹配字符串中出现变量及其值的位置。

4

2 回答 2

1

您可以使用带有名称的匹配组,而不取决于其在模式中的顺序:

Match match = Regex.Match("aaa 113", @"(?<word>\w*)(?<space>\s+)(?<num>\d+)");
string words = match.Groups["word"].Value;              //"aaa"
string spaces = match.Groups["space"].Value;            //" "
string nums = match.Groups["num"].Value;                //"113"
于 2013-01-19T14:01:07.690 回答
1

这就是匹配组的用途。

使用匹配组,您可以轻松提取与正则表达式的括号子表达式匹配的子字符串。模式就像(如果您的意图是匹配整个字符串,"\w*\s+(\d+)"您可能想要添加 anchors )。^$

int.Parse当你有一个子字符串时,如果这是你想要的(使用或类似的东西),你仍然可以将它转换为数值。

于 2013-01-19T13:41:24.563 回答