我习惯了Perl的正则表达式。有没有人知道为什么这不起作用(例如,“是”不打印)?
if ("zip".matches("ip"))
System.out.println("yea");
谢谢。
答案 0 :(得分:4)
matches()
完全匹配;字符串必须与模式匹配。
if ("zip".matches("zip"))
System.out.println("yea");
所以你可以这样做:
if ("zip".matches(".*ip"))
System.out.println("yea");
对于部分匹配,您可以使用完整的正则表达式类和find()
方法;
Pattern p = Pattern.compile("ip");
Matcher m = p.matcher("zip");
if (m.find())
System.out.println("yea");
答案 1 :(得分:1)
matches()的参数需要是一个完全形成的正则表达式,而不仅仅是一个子字符串。以下任一表达式都会导致打印“是”:
"zip".matches(".*ip.*")
"zip".matches("zip")
答案 2 :(得分:0)
使用:
if ("zip".contains("ip"))
在这种情况下,而不是RegEx。它更快,因为不需要RegEx-parser。
答案 3 :(得分:0)
尝试使用ends而不是匹配#34; zip"案件。
"zip".endsWith("ip");
如果你需要正则表达式,
"zip".matches(".*ip");