.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 arga
、arg1
、argb
和 arg2
。
检查每个Match
对象的Groups[1]
属性。以上是关于.NET Regex 是不是支持全局匹配?的主要内容,如果未能解决你的问题,请参考以下文章
在 RegEx 匹配中使用双 bang (!!) 是不是安全? [复制]