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

标签 java regex word match

问题:

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

  2. 单词必须有一定的大小,比方说“{2,5}”

  3. 单词中必须有一个特定的字符,比如字符“e”

我得到的:

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

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

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

最佳答案

您可以使用如下表达式:

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

关于Java:每个字符出现0-1次的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17933119/

相关文章:

java - quartz 调度程序 : How to dynamically read a quartz property from Java via API?

c# - 使用 RegEx 仅替换引号外的字符串

正则表达式检查第一个子文件夹是否为 "print"

python - 从没有空格/组合词的文本中检测最有可能的词

java - 是否有创建 JUnit 测试用例的程序?

java - Google map 在 Android 类 fragment 膨胀时出错

单词预测 - 获得最常见的前任和后继

java - 从文本文件中获取所有单词(Java)

java - 该方法对于解决这个问题是否正确?

Java 正则表达式在多个定界符上拆分,包括其他定界符的子字符串