.NET Regex 是不是支持全局匹配?

Posted

技术标签:

【中文标题】.NET Regex 是不是支持全局匹配?【英文标题】:Does .NET Regex support global matching?.NET Regex 是否支持全局匹配? 【发布时间】:2011-02-12 12:18:11 【问题描述】:

我无法在网上找到有关此的任何信息。有 RegexOptions,但它没有 Global 作为其选项之一。内联修饰符列表也没有提到全局匹配。

简而言之,我有一个正则表达式来解析类似的东西

--arga= "arg1"  --argb ="arg2" 

使用此正则表达式分成单独的参数名称/值对:

--(\\w+)\\s*=\\s*\"(\\w+)\"\\s*

但 .NET Regex 类不会全局(迭代地)执行此操作。所以为了让这个工作,我必须做一个匹配,然后从参数字符串中删除它,然后一遍又一遍地循环,直到我用尽所有参数。

最好运行一次正则表达式,然后遍历匹配组以获取名称值对。这可能吗?我错过了什么?

【问题讨论】:

【参考方案1】:

您正在寻找Regex.Matches method (plural),它返回一个集合,其中包含原始字符串中的所有匹配项。

【讨论】:

呃...谢谢!我完全错过了。我现在就试一试。 您能推荐最简洁的方法来获取名称值对吗?当我使用 Matches 时,它返回两个组:--arga="arg1"--argb="arg2",但我希望这些,plus argaarg1argbarg2 检查每个Match对象的Groups[1]属性。

以上是关于.NET Regex 是不是支持全局匹配?的主要内容,如果未能解决你的问题,请参考以下文章

匹配 .NET Regex 中的扩展 ASCII 字符

在 RegEx 匹配中使用双 bang (!!) 是不是安全? [复制]

Regex js 的正则

Regex 常见语法

RegEx - 当版本号不是“1.0”时匹配 XML 声明 [关闭]

Ruby regex- gsub 是不是存储它匹配的内容?