试图提出一个"简单"的正则表达式来掩盖看起来可能包含帐号的文本位。
- 任何包含数字的单词(或一系列此类单词)都应匹配
- 用四个X(xxxx)替换匹配字符串的所有先前部分
但这错过了下面的最后几个样本
用正则表达式替换是否可以实现这种安排?
我认为我将需要一些贪婪和超前功能,但我在这些领域的经验为零。
如果您具有类似111 2233 33的值,它将打印xxxx3 33。如果希望它没有空格,则可以将lambda变成多行语句,以从值中删除空格。
为了稍微解释一下正则表达式模式,它后面有一个负数,因此可以确保它后面的单词中没有数字(数字周围带有可选的单词字符)。然后是m1部分,该部分查找其中包含数字的单词。正则表达式模式解析其余字符后,将通过一些C#代码来捕获此字符的最后四个字符。
我认为正则表达式不是解决此问题的最佳方法,这就是为什么我发布此答案。对于如此复杂的情况,构建相应的正则表达式太困难了,更糟糕的是,其清晰度和适应性远低于长代码方法。
这些行下面的代码提供了您所追求的确切功能,它很清楚并且可以轻松扩展。
这是我真正的快速尝试:
这将选择所有这些测试用例。现在,对于C#代码,您需要检查每个匹配项,以查看匹配序列的开头或结尾是否有空格(例如,最后一个示例在选择之前和之后都有空格)
这是执行替换的C#代码: