Отбросить в конце строки пробел в конце строки при использовании регулярного выражения? - PullRequest
2 голосов
/ 07 сентября 2011

Проблема, с которой я здесь сталкиваюсь, заключается в том, что созданное мной текущее регулярное выражение работает не полностью.Если в конце моей строки нет пробелов, это не удастся.Мой вопрос, есть ли способ решить эту проблему?

Вот подробности вопроса:

Мне нужно регулярное выражение, которое гарантирует, что строки соответствуют следующему формату,

“LL=xxxxxx LL=xxxxxxxxx LL=xxxxxxx”

L = Letter.X = буква или цифра или знак пунктуации.

Ближайшее регулярное выражение, которое у меня есть,

([\\pL]{2}=[\\pL|\\pN|\\pP]+ )+

Но это регулярное выражение не работает и будет работать, только если строка имеет формат:1013 *

“LL=xxxxxx LL=xxxxxxxxx LL=xxxxxxx ”

Вот код, который я использую для проверки:

    final String regex1 = "([\\pL]{2}=[\\pL|\\pN|\\pP]+ )+"; 
    String x = "xx=xxxxxx xx=xxxxxxxxxm xx=xxxxxxx xx=xxxxxxx"; // This is what I need!
    String y = "xx=xxxxxx xx=xxxxxxxxxm xx=xxxxxxx xx=xxxxxxx "; // This works, no good
    System.out.println(x.matches(regex1));
    System.out.println(y.matches(regex1));

1 Ответ

3 голосов
/ 07 сентября 2011

Замените пробел на (?: |\z) и он должен работать.

([\\pL]{2}=[\\pL\\pN\\pP]+(?: |\\z))+

(?: |\z) - это группа без захвата, которая соответствует пробелу или концу ввода.что в [\\pL|\\pN|\\pP], | не означает «или».Вы, вероятно, хотите [\\pL\\pN\\pP], что означает любую из букв, цифр или знаков пунктуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...