我在为下面的 Java 正则表达式获取正确语法时遇到问题。我只想搜索一个 String 以查看它是否包含一段以三个单引号开头并以三个单引号结尾但前后可以有其他文本的文本。三个单引号之间可以存在任何 UTF-8 字符。我哪里出错了?
String value="'''<html><head><title>Hello World</title></head><body><div>text</div></body></html>'''";
Pattern p = Pattern.compile("'''[\\w*]'''");
Matcher m = p.matcher(value);
if(m.find()){
System.out.println("''' found");
}else{
System.out.println("''' not found");
}
最佳答案
Any ideas where I've gone wrong?
您的正则表达式有两处错误:
- 您正试图将
*
量词放在字符类中,而它应该放在字符类之外。 - 您正在尝试使用单词字符 (\w) 预定义字符类来匹配 <、>、/等字符,而它只会匹配
[a-zA-Z_0-9]
。如果您想匹配任何字符,请使用.
(任何字符)
将正则表达式更改为 Pattern p = Pattern.compile("'''.*'''");
应该可以使您的问题中提供的代码正常工作。
其他答案中建议的模式也将提供解决方案。
关于java - 正则表达式匹配三个前导和结束单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18759394/