使用正则表达式查找和替换保留大小写

6
我的问题很简单,只使用正则表达式查找和替换,是否可以保留原始单词的大小写?
因此,如果我有字符串:“Pretty pretty is so pretty” 如何将其变为:“Lovely lovely is so lovely”?
到目前为止,我只找到了/(P|p)retty/g并替换$1ovely,但是我不知道如何用L代替大写的P,l代替小写的p。
我不关心在任何特定语言中完成这个任务,我想知道是否可以纯粹使用正则表达式实现。

2
你正在运行哪种编程语言? - Avinash Raj
@AvinashRaj 我想这是不可能的 - 我并不是在寻求用特定语言给出答案。 - dezman
@AvinashRaj,请随意回答并表示这是不可能的。 - dezman
1
@Andrew 如果您想保留原始字符串,它确实会保留原始大小写,但在这种情况下,dezman要求从不同但相同长度的字符串(Pretty -> Lovely)进行大小写映射。 - OrderFromChaos
显示剩余2条评论
1个回答

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

注意:内置函数作为回调在正则表达式方法中。例如:https://dev59.com/x2Yr5IYBdhLWcg3wYZOD#13721786 - ʰᵈˑ
@hd 这实际上需要在回调函数中使用 if else 条件。 - Avinash Raj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接