Почему мое регулярное выражение не соответствует? - PullRequest
1 голос
/ 23 февраля 2010

У меня есть несколько строк в текстовом файле, например:

==Text==

Я пытаюсь сопоставить начало, используя это:

line.matches("^==[^=]")

Однако, это возвращает false для каждой строки ... небольшая помощь?

Ответы [ 7 ]

7 голосов
/ 23 февраля 2010

Насколько я помню, метод matches() ищет только точное совпадение.

4 голосов
/ 23 февраля 2010

matches автоматически привязывает регулярное выражение, поэтому регулярное выражение должно соответствовать всей строке. Попробуйте:

line.matches("==[^=].*")
1 голос
/ 23 февраля 2010

Вы также можете использовать String.startsWith("==");, если это что-то простое.

0 голосов
/ 23 февраля 2010

Если я правильно помню, matches вернет true, только если вся строка соответствует регулярному выражению. В вашем случае это не так. Чтобы использовать matches, вам нужно расширить свое регулярное выражение (используя подстановочные знаки), чтобы оно соответствовало концу строки. В качестве альтернативы вы можете просто использовать метод Matcher.find() для сопоставления подстрок строки

0 голосов
/ 23 февраля 2010

.matches возвращает true, только если вся строка совпадает. В вашем случае строка должна начинаться с '==' и содержать ровно один символ, который не был равен. Если вы хотите сопоставить эту строку для всей строки:

line.matches ( "== [^ =] * ==")

0 голосов
/ 23 февраля 2010

Попробуйте с line.matches("^==(.+?)==\\s*$")

0 голосов
/ 23 февраля 2010
try line.matches("^==[^=]*==$")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...