首页 > 解决方案 > 如何过滤嵌套正则表达式的子集以匹配组

问题描述

我试图找出一个正则表达式模式来返回除两个特殊字符(;)之间的空格之外的所有字符。谢谢您的帮助。

这是我的正则表达式模式。[^\w](?<Group1>[^;\W].+)

要匹配的示例文本。 Please; help;me

我正在help;me成为 Group1 匹配器,但我只需要help.

标签: regexregex-group

解决方案


[^\w](?<Group1>[^;\W].+)模式匹配一​​个非单词字符,然后捕获除非单词之外的任何字符和;(即任何单词字符,除了;- 这没什么意义,;可以安全地从类中删除),然后尽可能多地捕获任何 1+ 字符进入第 1 组。基本上,它可以重写为\W(?<Group1>\w.+),你会看到它匹配太多而不是你需要的。

您可以使用这样的模式其中\S*?匹配除空格以外的任何 0+ 字符,尽可能少:

;\s*(?<Group1>\S*?)\s*;

或者,这种模式的更有效变体:

;\s*(?<Group1>[^;\s]*)\s*;

在该[^;\s]*模式中,;是“减去\S并且[^;\s]*现在匹配零个或多个字符而不是空格和;,尽可能多。

查看另一个正则表达式演示


推荐阅读