Регулярное выражение и строковые операции - PullRequest
4 голосов
/ 05 февраля 2012

У меня есть строка в следующем формате

blah blah [user:1] ho ho [user:2] he he he

Я хочу заменить его на

blah blah <a href='1'>someFunctionCall(1)</a> ho ho <a href='2'>someFunctionCall(2)</a> he he he

две замены [user: id] и methodCall

примечание: я хочу сделать это просто, какой эффективный способ это сделать

Ответы [ 2 ]

3 голосов
/ 05 февраля 2012

Groovy, детка:

def someFunctionCall = { "someFunctionCall(${it})" }
assert "blah blah [user:1] ho ho [user:2] he he he"
    .replaceAll(/\[user:(\d+)]/){ all, id ->
    "<a href=\"${id}\">${someFunctionCall(id)}</a>"
    } == "blah blah <a href=\"1\">someFunctionCall(1)</a> ho ho <a href=\"2\">someFunctionCall(2)</a> he he he"
1 голос
/ 05 февраля 2012

Я не знаю о Groovy, но в PHP это будет:

<?php
$string = 'blah blah [user:1] ho ho [user:2] he he he';
$pattern = '/(.*)\[user:(\d+)](.*)\[user:(\d+)](.*)/';
$replacement = '${1}<a href=\'${2}\'>someFunctionCall(${2})</a>${3}<a href=\'${4}\'>someFunctionCall(${4})</a>${5}';
echo preg_replace($pattern, $replacement, $string);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...