我想替换不区分大小写的让我们说混合:
text StmiXx and some more mIxx text
在正则表达式替换后:
text St<font color="red">miX</font>x and some more <font color="red>mIx</font> text
代码:
$string = "text StmiXx and some more mIxx text";
$pattern = "/mix/i";
$replacement = "<font color=\"red\">match</font>";
echo preg_replace($pattern, $replacement, $string);
如何使用正则表达式完成此操作?我也想尝试使用(Linux)sed,或者还有一种方法可以使用egrep,grep。
egrep有一个选项--color = always但不是自定义突出显示。
答案 0 :(得分:2)
你很亲密!以下是如何在PHP中执行此操作:
$string = "text StmiXx and some more mIxx text";
$pattern = "/(mix)/i";
$replacement = "<font color=\"red\">$1</font>";
echo preg_replace($pattern, $replacement, $string);
在模式中,括号可用于捕获内容(组)。然后,您可以通过重复括号的数量来引用该组。在这种情况下,我们只有一个组。这就是为什么在替换中我使用$1
来引用我们模式中唯一的捕获组。
答案 1 :(得分:1)
s="text StmiXx and some more mIxx text"
echo "$s" | sed -e 's!\([mM][iI][xX]\)!<font color="red">\1</font>!g'
修改强>
执行替换并仅打印匹配的行:
sed -n -e 's!\([mM][iI][xX]\)!<font color="red">\1</font>!g;/[mM][iI][xX]/p'
要获得前N行,您可以将其管道传输到:或
sed -n -e '1,10p'
答案 2 :(得分:0)
$string = "text StmiXx and some more mIxx text";
$pattern = "/(mix)/i";
$replacement = "<font color=\"red\">$1</font>";
echo preg_replace($pattern, $replacement, $string);
必须盯着一分钟才能真正弄清楚代码中是否有错误:)
$ 1表示模式在()
中找到的第一件事例如,如果你想因某种原因将其改为m-ix,你可以这样:
$string = "text StmiXx and some more mIxx text";
$pattern = "/(m)(ix)/i";
$replacement = "<font color=\"red\">$1-$2</font>";
echo preg_replace($pattern, $replacement, $string);