Java regex - сопоставление начала строки

Я новичок в регулярном выражении, и у меня проблемы с этой работой. Следующая строка возвращает false, но я думаю, что она должна возвращать true.

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

Я хочу соответствовать первым трем буквам "DOI", независимо от того, что происходит после него. Я пытаюсь удалить якорь, но он все еще не соответствует. Может ли кто-нибудь помочь объяснить это мне?

3 ответа

Вы можете попробовать

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

Вы хотите, чтобы ваш текст начинался с DOI, и после этого вам просто нужно любое количество символов .*

Однако, как указано в других ответах, String.startWith лучше, если вы только проверяете, что ваша строка начинается с фиксированного префикса. Regexp позволит вам делать более мощные вещи, хотя, тем не менее, это более болезненная производительность (и более сложный код).


Просто используйте

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

Он проверяет, начинается ли ваша строка с DOI или нет.


Это лучший путь

String.startsWith("DOI");

licensed under cc by-sa 3.0 with attribution.