正则表达式多重匹配
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 正则表达式系统。
作为参考,这是我正在使用的正则表达式测试器:
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 正则表达式系统。