0

我试图在java中的字符串末尾识别任何特殊字符('?','。',',')。这是我写的:

public static void main(String[] args) {
    Pattern pattern = Pattern.compile("{.,?}$");
    Matcher matcher = pattern.matcher("Sure?");
    System.out.println("Input String matches regex - "+matcher.matches());

}

false这会在预期为 时返回 a true。请建议。

4

3 回答 3

3

使用"sure?".matches(".*[.,?]").

String#matches(...)^用and锚定正则表达式$,无需手动添加它们。

于 2013-11-15T10:07:50.900 回答
2

尝试这个

Pattern pattern = Pattern.compile(".*[.,?]");
...
于 2013-11-15T10:02:55.233 回答
2

这是你的代码:

Pattern pattern = Pattern.compile("{.,?}$");
Matcher matcher = pattern.matcher("Sure?");
System.out.println("Input String matches regex - "+matcher.matches());

你有2个问题:

  1. 您正在使用{ and }而不是字符类[ and ]
  2. 您正在使用Matcher#matches()而不是Matcher#find. matches方法匹配整个输入行,同时find在字符串中的任何位置执行搜索。

将您的代码更改为:

Pattern pattern = Pattern.compile("[.,?]$");
Matcher matcher = pattern.matcher("Sure?");
System.out.println("Input String matches regex - " + matcher.find());
于 2013-11-15T10:11:07.100 回答