如何过滤嵌套正则表达式的子集以匹配组
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]*
现在匹配除空格和 ;
之外的零个或多个字符,越多越好。
我正在尝试为 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]*
现在匹配除空格和 ;
之外的零个或多个字符,越多越好。