Java 用于检测单词中特殊字符的模式匹配
我试图在java中识别字符串末尾的任何特殊字符(“?”、“.”、“,”)。以下是我写的:Java 用于检测单词中特殊字符的模式匹配,java,regex,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.matc
public static void main(String[] args) {
Pattern pattern = Pattern.compile("{.,?}$");
Matcher matcher = pattern.matcher("Sure?");
System.out.println("Input String matches regex - "+matcher.matches());
}
当预期为true
时,返回一个false
。请建议。试试这个
Pattern pattern = Pattern.compile(".*[.,?]");
...
使用“确定?”。匹配(“.[,?]”)
String#匹配(…)
自动使用^
和$
锚定正则表达式,无需手动添加它们。这是您的代码:
Pattern pattern = Pattern.compile("{.,?}$");
Matcher matcher = pattern.matcher("Sure?");
System.out.println("Input String matches regex - "+matcher.matches());
您有两个问题:
{and}
而不是字符类[and]
Matcher\matches()
而不是Matcher\find
matches
方法匹配完整的输入行,而find
在字符串中的任何位置执行搜索Pattern pattern = Pattern.compile("[.,?]$");
Matcher matcher = pattern.matcher("Sure?");
System.out.println("Input String matches regex - " + matcher.find());
尝试使用方括号而不是花括号。使用类似于测试和实验正则表达式的站点。如果使用
匹配()
方法(请参阅),这将起作用,但如果使用查找()
,则字符串中的任何位置都有
、、
或?
,则会匹配。