2016-05-12 2 views
0

Я пытаюсь написать регулярное выражение, которое изменит суффикс -ecek на -icek, если глагол имеет -e -i букв в расине. Например, для «gelecek» я хочу получить «gelicek». До сих пор у меня есть это:Регулярные выражения для изменения слова с определенным условием в perl

$phone46=~s/(e|i)ecek/icek/g; 

Я не хочу сказать, е или я с последующим ecek, но я хочу сказать, е, я следую любым буквы, + ecek. Как я могу улучшить (e | i) часть, чтобы показать, что за ними может следовать любой символ?

Спасибо за вашу помощь

+0

Звучит немного неясно: попробуйте 's/(?: e | i) (\ p {L} *) cek/i $ 1cek/g'. Укажите примерные строки и ожидаемый результат. –

+0

Сколько букв должно быть разрешено? Единственный? Менее 5? –

+0

-ecek - суффикс сопряжения глаголов. поэтому расина глагола может иметь как можно больше. Например, для guvenecek я хочу иметь guvenicek. поэтому я просто хочу сказать, есть ли где-то в расине глагола. – oezlem

ответ

2

Не уверен, что я хорошо понимаю ваши потребности, но как насчет:

$phone46 =~ s/([ei][a-z]*)ecek/$1icek/g; 

Это заменит ecek на icek, когда есть e,i followed by any letters перед тем ecek

0

Я думаю, что вы можете пойти примерно на следующее:

s/([ei][[:alpha:]]*)ecek\b/$1icek/g 

Это соответствует e или i, за которым следует любое количество буквенных символов [[:alpha:]], а затем ecek. Часть в скобках фиксируется и используется в замене.

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