String regex在UNIX系统上不起作用,但在Windows上运行良好

时间:2017-12-11 12:34:45

标签: java regex windows unix

我有一个简单的正则表达式:

".*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>

0 个答案:

没有答案