Замена в регулярном выражении - PullRequest
1 голос
/ 12 марта 2011

У меня есть список:

1  name1
2  name2
3  name3

Мне нужно заменить все 1,2,3 ... на «1», «2», «3» ... и name1, name2, name3 на «name1», «name», «name'3 , Я знаю, как это сделать через '\ n' и '\ s'.

Но я думаю, что лучший способ существует. Кто-нибудь знает этот путь?

Ответы [ 3 ]

2 голосов
/ 12 марта 2011

Вот решение JavaScript:

str = str.replace(/(\w+)/g, "'$1'");
2 голосов
/ 12 марта 2011

Вы можете сделать это легко с помощью perl,

на Unix-машине, с терминала:

perl -pe 's/regex/replace/' input > output

(вывод> является необязательным, и он просто будет распечатан натерминал)

так:

perl -pe "s/([0-9]+)\s(.*)/'\1' '\2'/g" file > file2

Это найдет хотя бы одно число в начале и захватит его (как \ 1 ).затем некоторое свободное место, затем остальная часть строки, захваченная (как \ 2 ).после / идет бит замены.просто добавьте ' s и вставьте захваченные биты.

(если вы работаете в Windows, вы можете получить Perl здесь: http://www.perl.org/get.html#more)

1 голос
/ 12 марта 2011

Вот небольшой фрагмент в PHP:

$str = "1 name1\n2 name2\n3 name3";
$str2 = preg_replace('!([^\s]+)\s([^\n]+)!sm', "'$1' '$2'", $str);
echo $str2;

Он использует $ 1 и $ 2 для обозначения округленной скобки, которую вы «поймали» в строке

...