正则表达式:多次匹配多个单词

时间:2018-01-12 18:17:17

标签: regex

我需要一个匹配单词和单词组合的正则表达式,但是,我不知道这些单词旁边会是什么。我需要匹配水果苹果,巴巴纳和橙子。水果将被空格隔开。

"sometext apple bananamoretext"
//Should match "apple banana"

"sometext appledifferentmoretext"
//Should match "apple"

"sometext bananaadditionaltext"
//Should match "banana"

"sometext apple orangesomethingelse"
//Should match "apple orange"

我拥有的是:

 /sometext\s((apple|banana|orange)(\s+))*/

但我只能apple无法获得其他水果

1 个答案:

答案 0 :(得分:1)

您可以将此正则表达式用于匹配:

(?:apple|banana|orange)(?:\s+(?:apple|banana|orange))*

RegEx Demo

Ruby RegEx Demo

RegEx分手:

  • (?:apple|banana|orange):匹配其中一个给定的水果名称
  • (?::启动非捕获组
    • \s+:匹配1个或更多空格
    • (?:apple|banana|orange):匹配其中一个给定的水果名称
  • )*:结束非捕获组。匹配0个或更多这些组