【发布时间】:2019-07-03 10:24:38
【问题描述】:
正则表达式:
(?<lang2>this\s*is\s*a\s*test\s*string)|(?<lang1>test)
示例文本:
this is a test string
如果您单独运行这些命名的捕获组,则会在具有值的匹配组中产生结果。 但是如果你像上面写的那样运行它,那么它会返回 1 组而不是 2 组。我需要抓住这两个群体。所以输出组应该是这样的:
匹配组 1:“这是一个测试字符串”
匹配组 2:“测试”
【问题讨论】:
-
因为
this is a test string中的test已经被(?<lang2>this\s*is\s*a\s*test\s*string)消费了。你在做什么?请解释。您是否正在尝试构建动态正则表达式并寻找重叠匹配? -
是的,即使它被消耗,也可以识别所有字符串。
-
那么请贴出你代码的相关部分,看看你在做什么。我认为您应该遍历所有可能的模式以查看它们是否匹配。