Regex 匹配特定字符和单个通配符的正则表达式

Regex 匹配特定字符和单个通配符的正则表达式,regex,Regex,我正在尝试创建一个正则表达式,它可以在字符串中查找某些字符和一个通配符或任何其他给定数量的通配符 字符可以是任意字母a-z,通配符也是如此 到目前为止,我有:^[poe]+$ 我使用上述正则表达式的目的是匹配任何长度的单词,其中只包含字母poe,还可以选择其他一个字母。一些可以匹配的“词语”: 佩克斯 人事军官 痘 EEP 但不匹配: PPPXY XYP 如果您希望声明四个字符以任何顺序出现,则lookaheads可能是此处的一个选项: ^(?=.*p)(?=.*o)(?=.*e)(?=.*q)

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

字符可以是任意字母a-z,通配符也是如此

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

我使用上述正则表达式的目的是匹配任何长度的单词,其中只包含字母poe,还可以选择其他一个字母。一些可以匹配的“词语”:

佩克斯 人事军官 痘 EEP 但不匹配:

PPPXY XYP
如果您希望声明四个字符以任何顺序出现,则lookaheads可能是此处的一个选项:

^(?=.*p)(?=.*o)(?=.*e)(?=.*q)[A-Za-z]{4,}$
这假设您希望匹配每个poe以及第四个字母q。

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

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


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

如果[POE]的其中一个字符应该在字符串中,[POE]可以出现0次或多次,而通配符可以出现0次或1次,则可以使用正向前瞻,对于通配符,可以使用字符类[a-DF-NQ-Z]?与P、O或E不匹配的范围:

那会匹配的

^字符串的开头 ?=*[POE] [POE]*一个P、O或E匹配0+次 [A-DF-NQ-Z]?匹配可选的not[POE] [POE]*一个P、O或E匹配0+次 $Assert表示行的结尾
您可以添加一些匹配和不匹配的示例输入吗?请提供一些示例匹配您说应该匹配包含这些字母和另一个字母的单词,这是指匹配的单词包含这三个字母和另一个字母,还是字符串作为一个整体包含这三个字母?您在前面的字符串中说。我添加了一些澄清\b?=\w*[epo][epo]*+[^\Wepo]?+[epo]*\b。在此处查看实时演示,您最好将。*替换为\w*否则它将与ACDB$%中的ACDB匹配poe@revo哦,是的。如果您添加了不需要的锚点,还添加了^$以匹配整个字符串。但我们不知道OP是否试图匹配整个输入字符串,最好不要使用“^”和$anchors。我明白了。知道了。今天早上我刚学了这个正则表达式。我在stackoverflow学到的东西比其他任何地方都多,这就像与合法导师一起做一个实际的项目。还将匹配pppq等。p、o和e中至少没有一个-假设这是OP想要的。它还要求[poe]都在第四个字母之前,这似乎不是一个要求。所以莫普不是对手,让奥普解释一下。只要OP中没有提供适当的示例,也可以假设这是预期的答案。字母POE可以是任意顺序,并且每个字母可以在单词中出现0次或更多次。应该匹配0或1次。这似乎与您描述的一样有效。但它只匹配例如“pose”,而它也应该匹配例如“pos”。POE可以匹配0次或更多次。通配符0或1次。@Stefan你的意思是这样吗?它应该是大写还是小写?我已经更新了我的答案。
^(?=.*[POE])[POE]*[A-DF-NQ-Z]?[POE]*$