正则表达式通过在 Geany 中将 [0-9] 映射到 [qp] 来替换第二个模式?

正则表达式通过在 Geany 中将 [0-9] 映射到 [qp] 来替换第二个模式?

我想替换123 456 789q23 r56 u89使用杰尼正则表达式。到目前为止,我可以使用多个查找和替换模式来完成此操作,如下所示:

...      
Find:    `(\D|^)4`    
Replace: `\1r`    


Find:    `(\D|^)5`    
Replace: `\1t`    
...

我想通过\2规则的映射将这 10 个语句合并为一个[1234567890] -> [qwertyuiop]

我怎样才能在 geany 中做到这一点?

答案1

我认为这不能用单个正则表达式来完成,因为无法查看捕获组的内部。但 Perl 可以在一行中完成此操作,因为它允许在替换中运行音译:

$ echo 123 456 789 | perl -pe 's/\b[0-9]/ $& =~ tr,1-90,qwertyuiop,r /ge'
q23 r56 u89

s/pattern/replacement/sed- 样式的 find+replace 运算符,\b匹配单词边框。finale后的/使替换成为表达式,并且其中的片段用于tr///音译$&,即包含匹配文本的变量。任意字符可以用作tr,因此使用逗号是为了不与外部运算符冲突。)

当然,如果您想在 Geany 内完成此操作,这并没有多大帮助。

相关内容