2016-12-09 2 views
0

Мне нужно найти все слова, которые имеют одинаковое появление пары букв, по крайней мере, дважды (слово - это все символы небелого пробела между пробелами, то есть chochol, 9933499). Я придумал это регулярное выражение, но его не работает, и я не могу понять, как правильно его записать.регулярное выражение для пары букв в одном и том же слове

[ ]\S*(\S\S)\S*\1\S*[ ] 
+0

Вам нужно регулярное выражение, которое будет соответствовать слову, которое имеет определенную букву 2 или более раз? – Stefan

+1

Попробуйте слово 'grep -oP '\ S * (\ S \ S) \ S * \ 1 \ S *'' –

+0

слово, которое имеет пару букв (две буквы), повторяющихся само по себе – vlado

ответ

0

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

Вы должны использовать

grep -oP '\S*(\S\S)\S*\1\S*' 

Смотрите online demo

Если вам нужно только, чтобы соответствовать «слова» с двумя повторяющимися одинаковыми последовательными буквами заменить (\S\S) с ([A-Za-z]{2}) или даже \p{L}{2}.

+0

Нет, они не идентичны, пара букв - 2 буквы, т. е. hooffooted, 12345347. И слово очень конкретное, его все между двумя пробелами, кроме символов пробелов, поэтому это может быть даже что-то вроде ti:/g:/er – vlado

+0

Прохладно, тогда мое решение [ что вам нужно] (http://ideone.com/fMNuc5). –

Смежные вопросы