Java正则表达式前面的字符

标签 java regex

我正在尝试构建一个正则表达式来检查某个字母是否出现在字符串中,它应该位于其他两个字符之一。我可以对一组字符执行此操作,但如何对字符串中的多个字符集执行此操作?

例如:C只能在A或B之前,即如果找到C,下一个字符只能是A或B。F只能在D或E之前(F不能在A或B之前)

A或B,然后C可能发生 D或E,则可以发生F

我该怎么做?

以下给我一个错误:

String pattern = "([F][D|E])|([A][B|C])";
String test = "FEAC";
System.out.println(test.matches(pattern));

最佳答案

假设唯一允许的字母是 A 到 F,您可以使用:

^(?:C[AB]|F[DE]|[ABDEG-Z])+$

查看the demo中的比赛

说明

  • 对于 matches 方法来说, anchor 不是必需的,但需要在原始版本中解释它们:
  • ^ anchor 断言我们位于字符串的开头
  • $ anchor 断言我们位于字符串的末尾
  • 匹配 C[AB] 一个 C,然后匹配一个 A 或 B,或者 |
  • F[DE] 一个 F,然后是一个 D 或 E,或者 |
  • [ABDEG-Z] 这些字母之一
  • + 一次或多次

选项:允许在字符串末尾使用 C 和 F

如果您想在字符串末尾允许使用 C 或 F,请添加以下内容:|[CF]$(实现此目的的几种方法之一)

正则表达式变为:

^(?:C[AB]|F[DE]|[ABDEG-Z]|[CF]$)+$

在 Java 中:

if (subjectString.matches("(?:C[AB]|F[DE]|[ABDEG-Z])+")) {
    // It matched!
  } 
else {  // nah, it didn't match...  
     } 

关于Java正则表达式前面的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24733633/

相关文章:

java - 正则表达式检测 <code>...</code> 代码块

java - 如何比较java中数组中的空元素?

获取 SOAP 响应时出现 javax.xml.bind.UnmarshalException

java - 如何在 Maven 中构造一个新项目,以便它找到 jar 文件并且不会给出依赖项错误

java - 正则表达式: exclusion in character class

python如何从字符串中提取运算符

python - Reg.sub 正则表达式帮助 Python 规范化目录/文件以与 Windows 良好配合

java - 将字符串 N 拆分为 N/X 个字符串

java - 获取 shell 命令对 Java 代码的响应

java - 向 Java 类添加字段