Notepad ++ REGEX遮罩/消毒数据

时间:2018-11-05 16:07:54

标签: regex notepad++ sanitization masking

需要清理生产文件,然后将其移交给第三方。完整性/字符数/数字应保持不变。

<ADD1<4, Privet Drive, Scotland, EC12 5FL, UK<

在上面的示例中,我们需要用数字9屏蔽数字,并用X或x屏蔽字符(基于大小写)。

目标数据应该是

<ADD1<9, Xxxxxx Xxxxx, Xxxxxxxx, XX99 9XX, XX<

2 个答案:

答案 0 :(得分:1)

NP ++应该使用boost::regex引擎。
而且,它显然使用了boost-extended替换格式字符串。

这意味着您可以在替换字符串中放置一个条件以进行测试
哪个组匹配,然后进行相应替换。

语法:(?1yes:no)说第1组是否匹配,是,是,否则是不是
语法:(?{1}yes:no)相同

如果有boost :: regex使用

更新

   only between <ADD1< and  <  

找到(?:(?!^)\G|<ADD1<)[^a-zA-Z0-9<]*\K(?:([A-Z])|([a-z])|\d)
替换(?1X:(?2x:9))

注意-选择替换字符串格式为Boost Extended
如果不是默认值。

https://regex101.com/r/pJCsZa/1

正则表达式信息

 (?:
      (?! ^ )
      \G                            # Start match where last left off
   |                              # or,
      <ADD1<                        # New start
 )
 [^a-zA-Z0-9<]*                # Optional non-letter or digit or <
 \K                            # Ignore matched characters up to here

 (?:                           # What's left, a letter or a digit
      ( [A-Z] )                     # (1)
   |  ( [a-z] )                     # (2)
   |  \d 
 )

答案 1 :(得分:0)

您应该可以在此处进行一系列替换。通过在正则表达式模式下进行搜索来进行每个替换,然后使用适当的替换:

[A-Z] -> replace with X
[a-z] -> replace with x
[0-9] -> replace with 9

我建议突出显示整个地址文本,然后进行替换。