java - 如何在 matches() 中使用正则表达式来查找字母、点和撇号?

标签 java regex

在下面的代码中,我使用 matches() 方法尝试了许多表达式来检查字符串 str 是否仅包含字母、点或撇号。

但是,它不会为此字符串返回 true,例如 one o'clock。:

String str = "One o'clock.";
System.out.println(str.matches("[^a-zA-Z'. ]"));

最佳答案

您有两个问题:

  1. 您的正则表达式正在使用 negated character class [^...]
  2. 您的正则表达式只能匹配仅包含一个字符的字符串。

因此请使用标准字符类[a-zA-Z'。 ] 并让您的正则表达式匹配字符串中的一个或多个字符,请使用 + quantifier .

System.out.println(str.matches("[a-zA-Z'. ]+"));

关于java - 如何在 matches() 中使用正则表达式来查找字母、点和撇号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30665013/

相关文章:

java - 自定义 Jackson 对象映射器

java - 将 .wav 转换为数组

java - 如何使用 MySQLContainer 设置全局变量

python - 对 python 正则表达式进行回查

ruby - 找一些句子

java - 如何在 spring security 4 xml 配置中禁用特定 url 的安全性以检索访问 token

java - 如何使用 Vavr 在 Java 中模式匹配具有定义类型的 Option 元组

python - str.format(**arg) 可以用来检查格式吗?

python - re.sub 上的非贪婪运算符

php - 用于 HTML 标记转换的正则表达式