gpt4 book ai didi

java - 为什么我的正则表达式不匹配大写字符和下划线?

转载 作者:行者123 更新时间:2023-11-30 08:58:52 24 4
gpt4 key购买 nike

我有以下 Java 代码:

public static void main(String[] args) {
String var = "ROOT_CONTEXT_MATCHER";
boolean matches = var.matches("/[A-Z][a-zA-Z0-9_]*/");
System.out.println("The value of 'matches' is: " + matches);
}

这会打印:'matches' 的值为:false

为什么我的 var 不匹配正则表达式?如果我正确读取我的正则表达式,它会匹配任何字符串:

  • 以大写字符A-Z开头;然后
  • 由零个或多个组成:
    • 小写字符 a-z;或
    • 大写字符 A-Z;或
    • 数字 0-9;或
    • 一个下划线

字符串“ROOT_CONTEXT_MATCHER”:

  • 以 A-Z 字符开头;和
  • 由 19 个连续字符组成,全部为大写 A-Z 或下划线

这是怎么回事?!?

最佳答案

问题在于正则表达式开头和结尾的正斜杠字符。它们在这里没有任何特殊含义,被视为文字。只需删除它们即可修复:

boolean matches = var.matches("[A-Z][a-zA-Z0-9_]*");

如果您打算使用元字符进行边界匹配,正确的字符是 ^ 作为行首,$ 作为行尾:

boolean matches = var.matches("^[A-Z][a-zA-Z0-9_]*$");

虽然这里不需要这些,因为 String#matches 会匹配整个字符串。

关于java - 为什么我的正则表达式不匹配大写字符和下划线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27468627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com