Совпадение слова начинается и заканчивается другой буквой - PullRequest
3 голосов
/ 01 апреля 2019

Я пишу общее выражение для сопоставления слов, которые начинаются и заканчиваются разными буквами.

Я пытался ^(.).*(?![^\1]$).Но это не работает.

Несколько слов для проверки: "aa", "ab", "aba", "aab", "abc".

Ответы [ 2 ]

2 голосов
/ 01 апреля 2019

Вы не можете поместить обратную ссылку в набор символов - вместо этого перед последним символом, отрицательный взгляд на первую группу (без набора символов), затем сопоставьте любой символ и конец строки:

^(.).*(?!\1).$

https://regex101.com/r/fnpsgf/1

0 голосов
/ 01 апреля 2019

Это зависит от вашего определения слова (какой символ разрешен)

\b(\w)\w*(?!\1)\w\b

Это первое регулярное выражение будет определять все слова, которые соответствуют критериям (первое слово char отличается от последнего слова char в слове (и слово length>=2)) из предложения.

Если вы используете . в своем регулярном выражении, оно будет соответствовать любому символу (кроме ограничителей строки), включая пробелы ...

Вы можете заменить его на ^ (\ w) \ w * (?! \ 1) \ w $, если ваш ввод уже является словом, также измените \w (эквивалентно [a-zA-Z0-9_]) на более подходящий диапазон для вас или предопределенного класса символов (в зависимости от вашего движка регулярных выражений \p{L}, [[:Alpha:]], \p{Alpha}, ...).

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