gpt4 book ai didi

java - 为什么这个 Java 正则表达式不起作用?

转载 作者:行者123 更新时间:2023-11-29 09:38:00 26 4
gpt4 key购买 nike

我正在尝试匹配任何包含以下内容的字符串:

  1. 任何 1 个以上字符的字母数字字符串;然后
  2. 两个句号("..");然后
  3. 任何 1 个以上字符的字母数字字符串

例如:

mydatabase..mytable
anotherDatabase23..table28

等等

给定以下函数:

public boolean isValidDBTableName(String candidate) {
if(candidate.matches("[a-zA-Z0-9]+..[a-zA-Z0-9]+"))
return true;
else
return false;
}

向此函数传递值 "mydb..tablename" 会导致它返回 false。为什么?提前致谢!

最佳答案

正如 NeplatnyUdaj 在评论中指出的那样,您当前的正则表达式应该为输入 "mydb..tablename" 返回 true

但是,您的正则表达式存在过度匹配的问题,它会为无效名称(例如 nodotname)返回 true

您需要转义 .,因为在 Java 正则表达式中,it will match any character except for line separators :

"[a-zA-Z0-9]+\\.\\.[a-zA-Z0-9]+"

在正则表达式中,您可以使用 \ 转义元字符(具有特殊含义的字符)。要在字符串字面量中指定\,需要再次转义。

关于java - 为什么这个 Java 正则表达式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16301859/

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