我想使用正则表达式使用掩码字符(例如“x”)来掩盖字符串中每个单词的前三个字母数字字符,因此“1 Buckingham Palace Road,London”将成为“ 1 Bucxxxxxxx Palxxx Roax,Lonxxx“。
使用
轻松完成前三个字符s/\b(\w{0,3})(.*)\b/$1/g
但我似乎无法弄清楚如何将长度($ 2)插入掩蔽字符而非$ 2。
谢谢!
答案 0 :(得分:4)
C#:
new Regex(@"(?<!\b.{0,2}).").Replace("1 Buckingham Palace Road, London", "x");
既然你说它与语言无关,我相信这可以很容易地移植到你选择的语言中......
或者,您可以获得2美元的长度并以旧式方式填充x。
答案 1 :(得分:1)
正面看后面,任何带有三个单词字符的单词字符在变为X之前:
S /(?&LT = \ W {3})\ W / $ 1X /克;
示例perl脚本:
my $string = "1 Buckingham Palace Road, London";
$string =~ s/(?<=\w{3})\w/$1x/g;
print qq($string\n);
答案 2 :(得分:0)
use warnings;
use strict;
my $string = "1 Buckingham Palace Road, London";
$string =~ s(
\b(\w{0,3})(\w*)\b
){
$1 . ( 'x' x length $2 )
}gex;
print $string, "\n";