我是正则表达式的新手,并且无法完成这项工作。以下行返回false但我认为它应该返回true。
Pattern.matches("^DOI", "DOI 10.1364/OL.36.002946")
我想要的是匹配前三个字母“DOI”,无论后面是什么。我试图删除锚,但它仍然不匹配。任何人都可以帮我解释一下吗?
答案 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");