我想在查找和替换对话框中使用RegExp。这样:
abcd ==> replaced by ==> efgh
Abcd ==> replaced by ==> Efgh
ABCD ==> replaced by ==> EFGH
aBcD ==> replaced by ==> eFgH
等
我知道RegExp可以帮助我找到特定的匹配。但我怀疑我正在寻找的是RegExp可以做到的。随着匹配在单词的不同实例中发生变化。
答案 0 :(得分:0)
你最好找到另一个工具/功能。
例如,在ruby中,您可以使用String#tr
:
from, to = 'abcd', 'efgh'
mapping = from + from.upcase, to + to.upcase # mapping = 'abcdABCD', 'efghEFGH'
'abcd'.tr(*mapping) # => "efgh"
'Abcd'.tr(*mapping) # => "Efgh"
'ABCD'.tr(*mapping) # => "EFGH"
'aBcD'.tr(*mapping) # => "eFgH"
在shell中:
$ echo aBcD | tr abcdABCD efghEFGH
eFgH
如果你真的想使用正则表达式,你可能需要传递某种回调函数。
在评论中使用Maroun Maroun的想法。
'aBcD'.gsub(/[abcd]/i) { |x| (x.ord + 4).chr }
# => "eFgH"
答案 1 :(得分:0)
使用正则表达式无法执行此操作。
您需要增加ASCII值。
# Powershell v 3.0
Param(
[string]$string,
[int]$increment
)
$string.GetEnumerator() | % {
$new_string += [char]([int]$_+$increment)
}
return $new_string
PS C:\> @("abcd","Abcd","ABCD","aBcD") | % {
>> .\incChars.ps1 -string $_ -increment 4
>> }
efgh
Efgh
EFGH
eFgH