我可以在JAVA的属性文件中使用正则表达式吗?

时间:2016-05-03 10:33:49

标签: java regex properties

我正在尝试断言存储在属性文件中的一些文本:

Text=\
some text\n\
to be\n\
asserted\n\
based on 1567 ratings

1567变化所以我想确保它被正则表达式替换,它会说这可以是使用\ d或\ d的任何数字,因为我必须在属性文件中转义\。

所以我尝试使用

Text=\
some text\n\
to be\n\
asserted\n\
based on \\d ratings

这是我用来断言的方法:

Assert.assertEquals(PropertyLoader.loadProperty("filename.properties", "Text"),actual);

实际是一个WebElement,它为我提供了网站上的文字,我使用了actual.getText()

这是具有loadProperty方法的类

class PropertyLoader {
    static String loadProperty(String file, String name) {
        Properties props = new Properties();
        try {
           props.load(getResourceAsStream(file));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return props.getProperty(name);
    }
}

最终结果是我得到了

比较失败:

Expected:
    some text
    to be
    asserted
    based on \d ratings

Actual:
    some text
    to be
    asserted
    based on 1567 ratings

不确定这是否可能,或者我只是遗漏了什么?

1 个答案:

答案 0 :(得分:1)

首先,属性文件的内容应为:

Text=\
some text\n\
to be\n\
asserted\n\
based on \\d+ ratings

然后你的测试用例将是:

Assert.assertTrue(
    Pattern.compile(
        PropertyLoader.loadProperty("filename.properties", "Text"),  
        Pattern.MULTILINE
    ).matcher(actual).matches()
);