正则表达式使用字符串替换来掩盖字符串

时间:2009-06-13 06:23:52

标签: regex language-agnostic

我想使用正则表达式使用掩码字符(例如“x”)来掩盖字符串中每个单词的前三个字母数字字符,因此“1 Buckingham Palace Road,London”将成为“ 1 Bucxxxxxxx Palxxx Roax,Lonxxx“。

使用

轻松完成前三个字符
s/\b(\w{0,3})(.*)\b/$1/g

但我似乎无法弄清楚如何将长度($ 2)插入掩蔽字符而非$ 2。

谢谢!

3 个答案:

答案 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";