有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带或条件的java正则表达式来验证两种不同的模式?

我需要做一个正则表达式来验证这两种模式。基本上,如果从下面两个模式传递任何字符串,我应该能够验证它

  • 第一种模式是-I可以有这样的字符串tree1tree2。所以基本上是一个前面有字符串tree的数字
  • 第二种模式是-I可以有这样的字符串tree1atree1btree2atree2b。所以这个模式的树[number][a-z]

我使用下面的正则表达式,但它只适用于第一个模式。我如何制作一个可以同时处理这两种模式的正则表达式

Pattern patternSet = Pattern.compile("^tree[0-9]$");

共 (2) 个答案

  1. # 1 楼答案

    可以添加可选的[a-z]?字符类

    ^tree[0-9][a-z]?$
    
    • ^字符串的开头
      • tree逐字匹配
      • [0-9]匹配数字0-9
      • [a-z]?可选地匹配a-z
    • $字符串结尾

    Regex demo| Java demo

    Pattern patternSet = Pattern.compile("^tree[0-9][a-z]?$");
    
  2. # 2 楼答案

    您的正则表达式应该看起来像tree\d[a-z]?,因此您的模式可以是:

    Pattern patternSet = Pattern.compile("tree\\d[a-z]?");
    

    如果你想要一个以上的数字和一个以上的字母,你可以使用:

    Pattern patternSet = Pattern.compile("tree\\d+[a-z]*");
    

    最后一个模式可以匹配tree123tree1abctree123abc