保持正则表达式的查找和替换

时间:2015-03-17 16:50:54

标签: regex

我的问题很简单,只使用正则表达式查找和替换,是否可以保留原始单词的大小写。

所以,如果我有字符串:“非常漂亮是如此美丽” 我怎么能把它变成:“可爱可爱如此可爱”

到目前为止,我所有人都找到了/(P|p)retty/g并替换为$1ovely,但我不知道如何用L替换caplital P,用l替换小写p。

我对使用任何特定语言完成此操作不感兴趣,我想知道是否可以使用纯正则表达式。

1 个答案:

答案 0 :(得分:1)

根据单独通过正则表达式捕获的字母类型,无法将捕获的大写或小写字母替换为字母。但它可以通过语言内置函数+正则表达式来实现。

在php中,我会喜欢。

$str = "Pretty pretty is so pretty";
echo preg_replace_callback('~([pP])retty~', function ($m)
        { 
            if($m[1] == "P") {
            return "Lovely"; }
            else { return "lovely"; }
        }, $str);

输出:

Lovely lovely is so lovely