模式匹配以检测单词中的特殊字符

时间:2013-11-15 09:56:17

标签: java regex

我试图在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,则返回true。请建议。

3 个答案:

答案 0 :(得分:3)

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

String#matches(...)使用^$对正则表达式进行anto-ancho,无需手动添加它们。

答案 1 :(得分:2)

试试这个

Pattern pattern = Pattern.compile(".*[.,?]");
...

答案 2 :(得分:2)

这是你的代码:

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

你有两个问题:

  1. 您使用的是{ and }而不是字符类[ and ]
  2. 您使用Matcher#matches()代替Matcher#findmatches方法匹配整个输入行,find在字符串中的任何位置执行搜索。
  3. 将您的代码更改为:

    Pattern pattern = Pattern.compile("[.,?]$");
    Matcher matcher = pattern.matcher("Sure?");
    System.out.println("Input String matches regex - " + matcher.find());
    
相关问题