正则表达式不应以字符开头并且包含序列

时间:2018-09-28 10:03:26

标签: regex

例如,不应以 h 开头,而应包含 ap
应该与 ap 匹配,r ap 神,tr ap ,但不匹配h ap py。

我尝试了

^[^h](ap)*

但它与以ap开头的序列(如 ap ology)不匹配。

2 个答案:

答案 0 :(得分:0)

@WiktorStribiżew的负前瞻性注释是正确的(如果要匹配整个字符串,则可能要在其中添加.*)。

为完整起见,您还可以使用交替:

^(?:[^h].*ap|ap).*

演示:https://regex101.com/r/ecVTGm/1

答案 1 :(得分:0)

您可以使用

^(?!h).*ap

请参见following demo。要将整个字符串匹配到末尾,请在末尾附加.*

^(?!h).*ap.*

如果您计划仅匹配您概述的规则中的单词,则可以使用

\b(?!h)\w*ap\w*

或者,不带前瞻性提示:

\b([^\Wh]\w*)?ap\w*

请参见this regex demodemo without a lookahead