输入前四个字符

时间:2017-10-17 12:58:48

标签: regex regex-negation

下面的正则表达式匹配整个单词servicegenericcomputermaster

(?:^|(?<= ))(service|generic|computer|master)(?:(?= )|$)

我希望只要前4个字符与模式匹配就匹配。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用嵌套的可选组。请注意,您还可以通过将(?:^|(?<= ))(?:(?= )|$)替换替换为(?<!\S)(?!\S)外观来缩短边界模式。

模式看起来像

(?<!\S)(serv(?:i(?:ce?)?)?|gene(?:r(?:ic?)?)?|comp(?:u(?:t(?:er?)?)?)?|mast(?:er?)?)(?!\S)

请参阅regex demo

<强>详情

  • (?<!\S) - 不允许在当前位置左侧立即使用非空格
  • ( - 轮换组开始:
    • serv(?:i(?:ce?)?)? - servserviservicservice
    • | - 或
    • gene(?:r(?:ic?)?)? - genegenergenerigeneric
    • | - 或
    • comp(?:u(?:t(?:er?)?)?)? - compcompucomputcomputecomputer
    • | - 或
    • mast(?:er?)? - mastmastemaster
  • ) - 交替小组结束
  • (?!\S) - 不允许紧靠当前位置右侧的非空格。