Java,正则表达式,String#matches(String)

时间:2011-09-29 06:46:30

标签: java regex

我习惯了Perl的正则表达式。有没有人知道为什么这不起作用(例如,“是”不打印)?

if ("zip".matches("ip"))
  System.out.println("yea");

谢谢。

4 个答案:

答案 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");

http://www.exampledepot.com/egs/java.lang/HasSubstr.html