正则表达式多重匹配

regular expression multiple matches

作为参考,这是我正在使用的正则表达式测试器:
http://www.rsyslog.com/regex/

如何修改这个正则表达式:

[^;]+

接收以下测试字符串的多个子匹配项:

;first;second;third;fourth;fifth and sixth;seventh;

我目前只收到一个子匹配:

first

基本上我希望每个子匹配都包含 ; 个字符之间的内容,我希望子匹配列表是这样的:

first
second
third
fourth
fifth and sixth
seventh

根据评论中给出的信息,我发现我无法获得多个子匹配项的原因是我需要指定全局修饰符 - 我似乎无法弄清楚该怎么做在 ryslog regex tester 我正在使用

但是,这确实让我以稍微不同的方式解决了我的问题。我想出了这个正则表达式,它仍然只给出一个匹配项,但末尾附近的数字充当所需匹配项的索引,例如:

(?:;([^;]+)){5}

与我在问题中的测试字符串相匹配:

fifth and sixth

虽然这个解决方案允许我实现我想要的 - 尽管以不同的方式 - 我的问题的真正答案可以在 HamZa 的评论中找到。更具体地说:

How can I modify the regular expression to receive multiple sub-matches?

答案是,您不能修改正则表达式本身以获得多个子匹配项。为此,需要设置全局修饰符。

基于此信息,我已发布 a new question on serverfault 专门针对 rsyslog 正则表达式系统。