2016-02-24 3 views
0

я следующая последовательность текста на той же строке в файле MYREGEX.txt:Perl REGEX, только первое появление на той же строке, замещается

test1.f.ABC, test2.f.XYZ, test3.f.PQR)); 

который я хотел бы преобразовать в:

test1.abc, test2.xyz, test3.pqr)); 

Следовательно, я придумал следующий Perl выражения, чтобы сделать необходимое:

perl -p -i -e 's/\.f\.([A-Z]*?[a-z0-9]*?)([\s\);,])/\.\L$1$2/' ./MYREGEX.txt 

Но, сценарий, кажется, повторно место только первое вхождение на этой линии, как показано ниже:

test1.abc, test2.f.XYZ, test3.f.PQR)); 

Может кто-то пожалуйста, скажите мне, что должно быть переделаны в моем сценарии?

+0

Ну похоже на «г», необходимого для добавления в конец шаблона .. как так s/\ е \.. ([AZ] *? [A-z0-9] *?) ([\ S \);])/\. \ L $ 1 $ 2/g, который, казалось, сделал трюк. Спасибо за подсказку. – TheLoneJoker

+1

Это должно быть обманом, но я в затруднении, чтобы найти его. – Sobrique

+0

@Sobrique Я нашел обратное: http://stackoverflow.com/questions/26932072/regex-first-occurance-in-whole-text-only –

ответ

2

добавить g добавить конец вашего регулярного выражения для глобально replacemant:

perl -p -i -e 's/\.f\.([A-Z]*?[a-z0-9]*?)([\s\);,])/\.\L$1$2/g' ./MYREGEX.txt 
+0

Но, без «/ g», не выполняет ли он по умолчанию глобальный стратегия замены? Каково поведение без «/ g»? – TheLoneJoker

+1

@TheLoneJoker [Here] (https://regex101.com/r/mD6mV0/1) - это поведение без '/ g' – Shafizadeh

+0

@TheLoneJoker Статичность по умолчанию заменяет первое появление, если вы можете видеть в своем результате. – Jens

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