与某些字符和单个通配符匹配的正则表达式

时间:2018-12-17 06:34:47

标签: regex

我正在尝试创建一个正则表达式,以查找字符串和一个通配符(或任何其他给定数量的通配符)中的某些字符。

字符可以是任何字母 a-z ,通配符也可以。

到目前为止,我有:^[poe]+$

我对上述正则表达式的意图是匹配任何长度的仅包含字母poe以及可选地一个其他字母的任何单词。一些可能匹配的“单词”:

  • PPEEOX
  • PO
  • POX
  • EEP

但不匹配:

  • PPPXY
  • XYP

4 个答案:

答案 0 :(得分:1)

如果您想断言四个字符以任意顺序出现,那么提前查找可能是这里的一种选择:

^(?=.*p)(?=.*o)(?=.*e)(?=.*q)[A-Za-z]{4,}$

这假设您要匹配poe中的每一个以及第四个字母q

答案 1 :(得分:0)

使用?=前瞻搜索特定字母,并使用\b边界限制为3-4个字母:

/\b(?=\w*p)(?=\w*o)(?=\w*e)[a-zA-Z]{3,4}\b/

答案 2 :(得分:0)

[poe]{3}[a-zA-Z]{1}

这意味着“有[一个'p'或'o'或'e'] {出现3次},然后[任何字母] {出现1次}”,跳过了开始标记和结束标记。

答案 3 :(得分:0)

如果[POE]的字符之一应在字符串中,则[A-DF-NQ-Z]?可以出现0次或多次,通配符出现0次或1次,则可以使用正向查找,对于通配符使用字符类P的范围与OE^(?=.*[POE])[POE]*[A-DF-NQ-Z]?[POE]*$ 不匹配:

^

Regex demo

这将匹配

  • (?=.*[POE])字符串的开头
  • [POE]*
  • POE[A-DF-NQ-Z]?匹配0次以上
  • [POE]匹配可选的非[POE]*
  • POE$匹配0次以上
  • availableForNavigation声明行的结尾