【发布时间】:2013-02-15 21:03:26
【问题描述】:
我正在尝试扩展此正则表达式以列出给定字母集的所有可能的字谜:
^(?!.*([aer]).*\1)(?!(.*d){4})([aerd]*|[a-z])$
到目前为止,基于这个正则表达式,我可以接收到由字母“dadder”组成的单词和子词的任意组合的匹配,例如“adder”、“add”、“ad”、“red”等等。 正则表达式复杂而不是简单的[dadder]* 的原因是因为显然每个字母可以匹配无限次,这很糟糕,如果提供了两个 d,我希望每个字母只匹配测试字符串一次,它最多只能匹配两次或更少。如果有人当然可以简化正则表达式以匹配指定 X 次的任何字母组合,请随时提供它:)
但是我的主要问题是,我现在想加入一个句号字符“.”。如果在字符列表中遇到句号,它将充当通配符并且可以匹配任何字符 a-z。所以dadd.r可以匹配daddzr、daddor、daddpr、rpdadd等。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
Check if string is subset of a bunch of characters? (RegEx)? 的可能副本。有两种类型的解决方案:从要测试的单词中形成正则表达式,或者形成单个正则表达式来匹配所有单词。披露:我是不受欢迎且疯狂的“形成单个正则表达式”的作者。
-
感谢您的链接,将检查它 nhahtdh
-
除非您知道自己在做什么,否则请按照帖子中的说明进行操作...
-
我做了,伙计,我知道是你生成的。我读过你的帖子。我只是想先让它在 Regex Buddy 中工作。我认为这应该适用于我的 or 条件,但它不是 :( 关于如何支持我的通配符的任何想法?
^(?!(?:[^a]*+a){3})(?!(?:[^b]*+b){2})(?!(?:[^\w]*+\w){1})(?!(?:[^c]*+c){2})(?!(?:[^d]*+d){2})(?!(?:[^e]*+e){2})(?!(?:[^f]*+f){2})(?!(?:[^g]*+g){2})([abcdefg]+|\w)$ -