我在我的模式(logback.xml)中使用以下内容来替换我日志中的10位数字。
%replace(%msg){'\d{10}','**********'}
这种方法的一个问题是,它还匹配11位数字的前10位数字。 有没有办法匹配10位数字。
现在更大的问题是我需要显示这个10位数字的最后两位数字。
答案 0 :(得分:4)
使用此:
%replace(%msg){'\b\d{10}\b','**********'}
\b
是一个单词边界,匹配一边是字母的位置,另一边不是字母(例如空格字符或字符串的开头)
答案 1 :(得分:2)
要显示(保留未捕获的)最后两位数字,请参阅以下正则表达式:
'\b\d{8}(?=\d{2}\b)'
这将在两个数字之前找到8个数字,其中10个数字被包裹在字边界内。由于(?= )
是前瞻性断言,因此不会匹配。然后可以将整个比赛替换为:
********
不需要捕获组。
答案 2 :(得分:1)
答案 3 :(得分:1)
是的,如果你使用它(如@ zx81所说):
\b\d{8}(\d\d)\b
( Explenation :http://www.regexper.com/#%5Cb%5Cd%7B8%7D(%5Cd%5Cd)%5Cb)
这将找到10位数并将最后2位数存储在一个组中。如果用这样的字符串替换它:
********$1
这将替换前8个数字,并将最后两个数字保持可见。 示例:http://regexr.com/3989s