Java正则表达式 - 匹配字符串的开头

时间:2014-05-20 15:20:38

标签: java regex

我是正则表达式的新手,并且无法完成这项工作。以下行返回false但我认为它应该返回true。

Pattern.matches("^DOI", "DOI 10.1364/OL.36.002946")

我想要的是匹配前三个字母“DOI”,无论后面是什么。我试图删除锚,但它仍然不匹配。任何人都可以帮我解释一下吗?

3 个答案:

答案 0 :(得分:4)

只需使用

String yourVar = "DOI dskljdj";
if (yourVar.startsWith("DOI")) { ... }

它会检查你的String是否以DOI开头。

答案 1 :(得分:2)

您可以尝试使用

System.out.println(Pattern.matches("^DOI.*", "DOI 10.1364/OL.36.002946"));

您希望您的文字以DOI开头,之后您只需要任意数量的任何字符.*

但是如其他回复中所述,如果您只检查字符串是否以固定前缀开头,那么String.startWith会更好。 Regexp将允许你做更多功能强大的东西,但是性能更加痛苦(并且代码更复杂)。

答案 2 :(得分:0)

这是最好的路线

String.startsWith("DOI");