2012-06-27 2 views
2

Как я могу найти вхождения с одинаковыми последующими символами в строке с регулярным выражением или функцией?Как найти вхождения одного и того же последующего символа в строке с регулярным выражением?

Пример:

Я л й т и у меня есть Thr й пи ZZ как. Это n oo b имеется там только один pi zz a. P oo r мальчик.

ответ

1

Вы можете использовать backreference:

/(.)\1/ 

Изменение \1 в \1+, если вы хотите, чтобы найти последовательности длиной два или более.

Обратите внимание, что синтаксис может отличаться в зависимости от используемого вами механизма регулярных выражений.

0

Как это в аромате perl. \w соответствует символу слова, а \2 соответствует вторым круглым скобкам.

m/((\w)\2+)/g 
+2

Зачем вам нужна первая группа захвата? – sln

+0

@sln: Я использую его, чтобы получить все последовательные буквы в качестве первой группы ('$ 1' или' \ 1'). Я мог бы избежать этого. – Birei

+0

Ну, Perlish '$ &' может замедлить его; если он используется через некоторое время (m/(())/g), вероятно, лучше, но @ary = m/(())/g может хранить дополнительные данные. – sln

0

Не знаю, какую версию регулярных выражений вы работаете, но egrep, это работает:

egrep '(.)\1' < file 

Это покажет все строки, которые имеют два некоторые символ в строке. Если вы хотите просто буквы:

egrep `([A-Za-z])\1' < file 

будет работать.

0

Google это: «двойные символы регулярных выражений»

Вот повторно скрипку я сделал с регулярным выражением: http://refiddle.com/2fa

0

Это должно работать ............... . (.)\1+

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