正则表达式匹配任何预定义前缀

时间:2017-03-23 22:47:57

标签: regex

示例:解析源字符串

  

apples, pears 不包括 kiwis oranges, grapefruits包括 bananas

工作版(?:(?<in>with\b|included)|(?<out>without|excluded))(.+?) 会产生与以下群体的匹配:

  • in:[apples, pearsbananas]
  • out:[oranges, grapefruitskiwis]

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以使用

(?:(?<in>with\b|includ(?:ed|ing))|(?<out>without|exclud(?:ed|ing)))((?:(?!with(?:out)?|exclud(?:ed|ing)|includ(?:ed|ing)).)+)

请参阅regex demo

enter image description here

<强>详情:

  • (?: - 启动非捕获分组构造
    • (?<in>with\b|includ(?:ed|ing)) - &#34; in&#34;小组:with整个单词(\b是单词边界)或included / including
    • | - 或
    • (?<out>without|exclud(?:ed|ing)) - &#34; out&#34;小组:withoutexcluded / excluding
  • ) - 分组结束
  • ((?:(?!with(?:out)?|exclud(?:ed|ing)|includ(?:ed|ing)).)+) - 捕获组1匹配任何字符(.),一次或多次(+),不会启动否定前瞻中的任何序列({{ 1}},withwithout / excludedexcluding / included