正则表达式多个匹配

时间:2015-03-17 22:54:43

标签: regex rsyslog

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

如何修改此正则表达式:

[^;]+

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

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

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

first

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

first
second
third
fourth
fifth and sixth
seventh

1 个答案:

答案 0 :(得分:1)

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

然而,这确实导致我以稍微不同的方式解决我的问题。我想出了这个正则表达式,它仍然只给出一个匹配,但是接近结尾的数字作为所需匹配的索引,例如:

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

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

fifth and sixth

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

  

如何修改正则表达式以接收多个   子匹配?

答案是,无法修改正则表达式以获得多个子匹配。为了做到这一点,需要设置全局修改器。

根据这些信息,我发布了专门针对rsyslog正则表达式系统的a new question on serverfault