Как заменить запятые на & в следующей строке, используя Perl? - PullRequest
2 голосов
/ 13 марта 2012

У меня есть такая строка:

my $string = 'Respect,13,201,7,0,0,2,3.70,4,1.01,Responsibility,13,177,29,1,1,2,3.58,4,1.04,Flexibility,13,180,27,0,0,3,3.59,4,1.05,Collaboration,13,194,13,0,0,3,3.65,4,1.04,Reflection,13,187,19,1,0,3,3.62,4,1.05,Commitmentto Learning,13,183,24,0,0,3,3.61,4,1.05,Beliefin Educator Efficacy,13,177,13,0,0,20,3.35,4,1.42,SocialIntelligence,13,184,22,1,0,3,3.61,4,1.05';

Как написать шаблон для использования с s/// для замены каждой запятой (,) непосредственно перед \w+ (например, Responsibility, Flexibility, Collaboration ...) на амперсанд (&) '?

Ответы [ 2 ]

3 голосов
/ 13 марта 2012

Вы можете использовать косвенное утверждение, например так:

s/,(?=[a-z]+)/&/gi

Вам следует заменить деталь [a-z]+ на более конкретный шаблон, основанный на вводе.

2 голосов
/ 13 марта 2012

Для замены всех запятых, за которыми следует \w+ (как вы и просили), я рекомендую

s/,(?=\w)/&/g

Поскольку после всех запятых следует \w+, вышеприведенное можно упростить до

s/,/&/g

Если вы хотите заменить только запятые, за которыми следуют буквы, вам нужно

s/,(?=\pL)/&/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...