我有一个简单的正则表达式:
".*number.*>(.+?)</"
我用来从标记中获取值,将其替换为X
并将此更改的值保存在同一标记中。它在Windows上运行良好,但是当我在UNIX系统上测试它时,它不起作用 - 找不到正则表达式。
这可能是什么问题?转义字符或其他字符编码?
我应该如何更改此正则表达式以在两个系统上都运行良好?
修改
以下代码:
List<String> regexes = new ArrayList<>();
regexes.add(".*number.*>(.+?)</");
for (final String regex : regexes) {
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(message);
while (matcher.find()) {
String unmaskedValue = matcher.group(1);
String maskedValue = unmaskedValue.replaceAll("(?s).", "X");
message = message.replaceAll(unmaskedValue, maskedValue);
}
}
return message;
输入标签:
<abc:number>1234I0000DEC0001</abc:number>