Logback:用********替换10位数字,最后两位数字

时间:2014-07-31 06:57:57

标签: regex logging logback

我在我的模式(logback.xml)中使用以下内容来替换我日志中的10位数字。

%replace(%msg){'\d{10}','**********'}

这种方法的一个问题是,它还匹配11位数字的前10位数字。  有没有办法匹配10位数字。

现在更大的问题是我需要显示这个10位数字的最后两位数字。

4 个答案:

答案 0 :(得分:4)

使用此:

%replace(%msg){'\b\d{10}\b','**********'}

\b是一个单词边界,匹配一边是字母的位置,另一边不是字母(例如空格字符或字符串的开头)

答案 1 :(得分:2)

显示(保留未捕获的)最后两位数字,请参阅以下正则表达式:

'\b\d{8}(?=\d{2}\b)'

View a regex demo!

这将在两个数字之前找到8个数字,其中10个数字被包裹在字边界内。由于(?= )是前瞻性断言,因此不会匹配。然后可以将整个比赛替换为:

********

不需要捕获组。

答案 2 :(得分:1)

获取相应10位数字的最后两位数字

'\b\d{8}(\d{2})\b'

第一个捕获组包含最后两位数字。

DEMO

答案 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