2013-09-17 3 views
-2

Мне нужно заменить сотни if (ereg("avion","$keyw")) на if (preg_match("@[email protected]","$keyw")) {Regex вопрос замены: с помощью группы

Я попытался это:

первая: ereg\("(.*)"

второй: preg_match\("@[email protected]"

Но он заменяет первую группу от '$ 1' ... Любая идея, пожалуйста?

+0

Какой язык вы используете? – Jerry

+0

@Jerry выглядит php – devnull

+0

php, но здесь я пытаюсь использовать редактор ultraedit, который разрешает выражения регулярных выражений ... Или использовать sed в bash, возможно ... – user2670167

ответ

0

Это работает на версии UltraEdit у меня есть:

enter image description here

Я просто не уверен, почему у вас есть @ на замену.

Вы можете выбрать «Текущий файл» для всех вместо «Выбранный текст», который я использовал для сравнения.

Другая вещь, чтобы отметить, что может быть безопаснее использовать:

ereg\("(.*?)", 

Заменить:

preg_match("@[email protected]", 
+0

О, да, вы правы, я просто выбираю «UNIX» вместо «Pearl» .. Спасибо – user2670167

+0

Отсутствующие разделители (я выбираю @, но это может быть /), и он помещает только 1-й разделитель не второй! – user2670167

+0

Работайте с 'ereg \ (" (. *) ",' И 'preg_match \ ("/$ 1/",' – user2670167

0

Использование sed вы можете попробовать этот способ:

sed -i".bak" 's/(ereg("\([a-z]*\)","\$keyw"))/\(preg_match\("@\[email protected]","$keyw"\)\)/' filename 

EDIT: Обновление, чтобы соответствовать любому слову, а не только 'Avion'

+0

Thx, но мне нужно глобальное регулярное выражение, а не только для «avion», У меня есть сотни выражений вроде этого ... – user2670167

+0

@ user2670167 Я обновил пример, чтобы соответствовать любому слову – Ander2

+0

Хорошо, имя файла может быть * .php? – user2670167

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