Lil*_*m4n 5 java regex cpu-word match
问题:
匹配正则表达式的每个字符最多出现一次的单词.
这个词必须是一定的大小,让我们说"{2,5}"
一个特定的字符必须在单词中,让我们说char"e"
我得到了什么:
word.matches("^[abcde]{2,5}$");
Run Code Online (Sandbox Code Playgroud)
这匹配字符a,b,c,d和e出现0..5次的所有单词.因此,即使"abba"使用char"b"两次并且"dead"使用char"d"两次,单词"abba"和"dead"也匹配.如果字符中的字符"e",表达式也会忽略.
我想要的是一个匹配,每个字符最多使用一次,字长2-5个字母,字符"e".例如,合法匹配将是"珠子",因为每个char最多使用一次并且字符"char".
Qta*_*tax 11
您可以使用以下表达式:
^(?=[abcd]*e)(?:([abcde])(?![abcde]*?\1)){2,5}$
Run Code Online (Sandbox Code Playgroud)
一些评论:
^
(?=[abcd]*e) # make sure there is an "e"
(?:
([abcde]) # match a character and capture it
(?! # make sure it's not repeated
[abcde]*?
\1 # reference to the previously matched char
)
){2,5}
$
Run Code Online (Sandbox Code Playgroud)