也许这是在某个地方被问到但当然我找不到我想要的答案:
我很难匹配字符串中的特定字符:
"88551554,86546546,51516565"
我想要匹配的数字是以下的X:
"XXXXX554,XXXXX546,XXXXX565"
现在我只能找到每个逗号前的最后3位数字:
\d{3}(?=,)
由于数字的长度是动态的,似乎无法指定3位数之前的位数。
任何人都可以提供帮助吗?
提前致谢!
答案 0 :(得分:3)
您可以使用此前瞻性正则表达式:
(\d+)(?=\d{3}(?:,|$))
这将匹配并分组必须后跟3位数字的1位或更多位数以及逗号或输入结束。检查已捕获组的演示链接中的匹配信息。
更新:要使用X
替换所有匹配的数字:
str = str.replaceAll("\\d(?=\\d*\\d{3}(?:,|$))", "X");
答案 1 :(得分:1)
要匹配它,请使用:
\d+(?=\d{3})
这个正则表达式确实:
\d+
...在一个和无限时间之间匹配一个数字(0-9)
(?=\d{3})
...在正向前瞻中匹配一个数字(0-9)正好三次。