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

时间:2018-10-09 14:42:43

标签: regex regex-group

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

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

示例文本以进行匹配。 Please; help;me

我以help;me作为Group1匹配者,但我只需要help

1 个答案:

答案 0 :(得分:1)

[^\w](?<Group1>[^;\W].+)模式与非单词char匹配,然后捕获非单词和;以外的任何char(即;以外的任何单词char,这几乎没有意义,可以将;从类中安全移除),然后将尽可能多的1个以上的字符放入第1组中。基本上,可以将其重写为\W(?<Group1>\w.+),您会发现它匹配得太多并且不是您所需要的。

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

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

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

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

[^;\s]*模式中,;是从\S中减去的,而[^;\s]*现在匹配零个或多个除空格和;以外的字符,如尽可能多。

请参见another regex demo