如何过滤嵌套正则表达式的子集以匹配组

How to filter subset of nested Regex for matching groups

我正在尝试为 return 所有字符计算一个正则表达式模式,除了两个特殊字符 (;) 之间的空格。 谢谢您的帮助。

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

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

我得到 help;me 作为 Group1 匹配器,但我只需要 help

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

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

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

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

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

[^;\s]* 模式中,; 是“从 \S 中减去的,[^;\s]* 现在匹配除空格和 ; 之外的零个或多个字符,越多越好。

参见 another regex demo