正则表达式匹配单词,或什么都不匹配

cru*_*ush 12 regex perl pcre

我真的很难在这上面贴上标签,这可能就是为什么我无法通过搜索找到我需要的东西.

我想要匹配以下内容:

  • 自动回复
  • 自动回复
  • 自动回复

我正在使用的平台不允许指定不区分大小写的搜索.我尝试了以下正则表达式:

.*[aA]uto(?:matic)[ ]*[rR]eply.*
Run Code Online (Sandbox Code Playgroud)

认为(?:matic)会导致我的表达匹配AutoAutomatic.但是,它只是匹配Automatic.

  • 我究竟做错了什么?
  • 这里的术语是什么?

这是使用Perl作为正则表达式引擎(我认为这是PCRE但我不确定).

ike*_*ami 26

(?:...)(...)算术的正则表达式模式:它只是覆盖优先级.

 ab|cd        # Matches ab or cd
 a(?:b|c)d    # Matches abd or acd
Run Code Online (Sandbox Code Playgroud)

一个?量词是什么使匹配可选.

 a?           # Matches a or an empty string
 abc?d        # Matches abcd or abd
 a(?:bc)?d    # Matches abcd or ad
Run Code Online (Sandbox Code Playgroud)

你要

(?:matic)?
Run Code Online (Sandbox Code Playgroud)

没有不必要的前导和尾随.*,我们得到以下内容:

/[aA]uto(?:matic)?[ ]*[rR]eply/
Run Code Online (Sandbox Code Playgroud)

正如@ adamdc78指出的那样,匹配AutoReply.使用以下内容可以避免这种情况:

/[aA]uto(?:matic[ ]*|[ ]+)[rR]eply/
Run Code Online (Sandbox Code Playgroud)


Hun*_*len 5

这应该有效:

/.*[aA]uto(?:matic)? *[rR]eply/
Run Code Online (Sandbox Code Playgroud)

你只是错过了?之后(?:matic)