正则表达式中变量的定义和提取
本文关键字:提取 定义 变量 正则表达式 | 更新日期: 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
或类似的东西),它仍然取决于你。