gpt4 book ai didi

c# - 包含数字的单词的正则表达式掩码

转载 作者:行者123 更新时间:2023-11-30 13:57:45 24 4
gpt4 key购买 nike

尝试想出一个“简单”的正则表达式来屏蔽看起来可能包含帐号的文本位。

用简单的英语:

  • 任何包含数字的词(或一串这样的词)都应该被匹配
  • 保留最后 4 位数字
  • 用四个 X (xxxx) 替换匹配字符串的所有先前部分

到目前为止

我正在使用以下内容:

[\-0-9 ]+(?<m1>[\-0-9]{4})

替换为

xxxx${m1}

但这错过了下面的最后几个样本

示例数据:

123456789
a123b456
a1234b5678
a1234 b5678
111 22 3333
this is a a1234 b5678 test string

实际结果

xxxx6789
a123b456
a1234b5678
a1234 b5678
xxxx3333
this is a a1234 b5678 test string

预期结果

xxxx6789
xxxxb456
xxxx5678
xxxx5678
xxxx3333
this is a xxxx5678 test string

这样的安排是否可以用正则表达式替换?

我认为我将需要一些贪婪和前瞻功能,但我在这些领域的经验为零。

最佳答案

这适用于您的示例:

var result = Regex.Replace(
input,
@"(?<!\b\w*\d\w*)(?<m1>\s?\b\w*\d\w*)+",
m => "xxxx" + m.Value.Substring(Math.Max(0, m.Value.Length - 4)));

如果您有一个类似于 111 2233 33 的值,它将打印 xxxx3 33。如果您希望它没有空格,您可以将 lambda 转换为多行语句,从值中删除空格。

为了稍微解释一下正则表达式模式,它有一个负向后视,因此它确保它后面的单词中没有数字(数字周围有可选的单词字符)。然后是 m1 部分,该部分查找其中包含数字的单词。在正则表达式模式解析其余部分后,通过一些 C# 代码获取最后四个字符。

关于c# - 包含数字的单词的正则表达式掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19775452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com