需要清理生产文件,然后将其移交给第三方。完整性/字符数/数字应保持不变。
<ADD1<4, Privet Drive, Scotland, EC12 5FL, UK<
在上面的示例中,我们需要用数字9屏蔽数字,并用X或x屏蔽字符(基于大小写)。
目标数据应该是
<ADD1<9, Xxxxxx Xxxxx, Xxxxxxxx, XX99 9XX, XX<
答案 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
我建议突出显示整个地址文本,然后进行替换。