免责声明:这是一项人为的任务,没有任何初始或潜在的问题。
有没有办法执行以下替换:
zerkms -> zerkms'
foo -> foo's
仅使用PCRE方言和replace
操作(因为它在https://regex101.com/中表示,没有特定的语言扩展名)?
我个人认为这是不可能的,因为没有(?)方法在捕获匹配中放置任意(在原始字符串中不存在)常量子串。如果有可能 - 那么我会有一个解决方案。
我付出的努力:嗯,这里并不多,因为我没有找到任何方法在PCRE中执行条件替换。
PS:欢迎https://regex101.com/演示。
PPS:问题不是关于这样做(我知道我们都可以使用带有条件的编程语言),而是关于展示PCRE能力(或缺乏它)。
答案 0 :(得分:5)
PCRE就是要发现。替换不是PCRE或正则表达式的一部分。
s/(s?)\b/$1?"s'":"'s"/eg;
(s?)\b
是PCRE。其余部分是Perl实施的替代。