正则表达式中变量的定义和提取

本文关键字:提取 定义 变量 正则表达式 | 更新日期: 2023-09-27 17:54:21

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

例如,我有一个这样的模式:"'w*'s+'d+"

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

当收到匹配字符串时,我希望能够简单地提取与模式中表示"'d+"的部分对应的值,这是使用c#

的数值

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

我希望这个过程是完全与上下文无关的,因为我们不需要变量和它们的值在匹配字符串中的出现位置

正则表达式中变量的定义和提取

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

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"

这就是匹配组的作用。

使用匹配组,您可以轻松地提取与regexp的括号括起来的子表达式匹配的子字符串。模式类似于"'w*'s+('d+)"(如果您的目的是匹配整个字符串,则可能需要添加锚^, $)。

当你有一个子字符串时,如果你想把它转换成数值(使用int.Parse或类似的东西),它仍然取决于你。