繁体   English   中英

Java:正则表达式,每个字符出现0-1次

[英]Java: Regular expression where each character occurs 0-1 times

问题:

  1. 匹配正则表达式的每个字符最多出现一次的单词。

  2. 这个词必须是一定的大小,让我们说“{2,5}”

  3. 一个特定的字符必须在单词中,让我们说char“e”

我得到了什么:

word.matches("^[abcde]{2,5}$");

这匹配字符a,b,c,d和e出现0..5次的所有单词。 因此,即使“abba”使用char“b”两次并且“dead”使用char“d”两次,单词“abba”和“dead”也匹配。 如果字符中的字符“e”,表达式也会忽略。

我想要的是一个匹配,每个字符最多使用一次,字长2-5个字母,字符“e”。 例如,合法匹配将是“珠子”,因为每个char最多使用一次并且字符“char”。

您可以使用以下表达式:

^(?=[abcd]*e)(?:([abcde])(?![abcde]*?\1)){2,5}$

一些评论:

^
(?=[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}
$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM