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

我可以在JAVA的属性文件中使用正则表达式吗?,java,regex,properties,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(

我试图断言存储在属性文件中的某些文本:

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);
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

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

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

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()
);

没有什么可以阻止您在那里存储正则表达式字符串,但是
assertEquals
方法不会尝试匹配正则表达式-您必须使用不同的断言。您可能可以添加一些逻辑来将属性键标记为正则表达式值,并尝试将它们作为模式加载,然后调用
assertTrue
等,在这种情况下尝试将模式与给定的
字符串匹配。您可以使用类似assertTrue(testString.matches(regex))的内容。顺便说一句,\d不会剪切它,因为它只匹配一个数字。您必须使用\d+或\d{4}。。。