Java 用户将输入一些筛选条件——如何将其转换为String.match的正则表达式

Java 用户将输入一些筛选条件——如何将其转换为String.match的正则表达式,java,regex,Java,Regex,我有一个程序,用户将输入一个字符串,例如 PropertyA=“abc_*”我需要星号匹配任何字符 在我的代码中,我获取属性值并用实际值替换PropertyA。例如,它可以是abc\u 123。我还将相等符号拉入变量 它应该能够涵盖这类标准 PropertyB='cba' 房地产!='*-这是 valueFromHeader是左侧,value是右侧 if (equality.equals("=")) { result = valueFromHeader.matches(value); }

我有一个程序,用户将输入一个字符串,例如
PropertyA=“abc_*”
我需要星号匹配任何字符

在我的代码中,我获取属性值并用实际值替换
PropertyA
。例如,它可以是
abc\u 123
。我还将相等符号拉入变量

它应该能够涵盖这类标准

PropertyB='cba'

房地产!='*-这是

valueFromHeader
是左侧,
value
是右侧

if (equality.equals("=")) {
    result = valueFromHeader.matches(value);
} else if (equality.equals("!=")) {
    result = !valueFromHeader.matches(value);
}
编辑:

现有代码对正则表达式进行了这种类型的替换

    final String ESC = "\\$1";
    final String NON_ALPHA = "([^A-Za-z0-9@])";
    final String WILD = "*";
    final String WILD_RE_TEMP = "@";
    final String WILD_RE = ".*";
    value = value.replace(WILD, WILD_RE_TEMP);
    value = value.replaceAll(NON_ALPHA,ESC);
    value = value.replace(WILD_RE_TEMP, WILD_RE);
它不喜欢这里的下划线

abcSite_123 != abcSite_123 (evaluates to true)
abcSite_123$1.matches("abcSite$1123")

它不喜欢下划线…

*
替换为
*

value=value.replace("*",".*");//replace  * with .*

如果您的值包含
+
,这将不起作用,因为它们在正则表达式中都有特殊的含义。如果它们存在,请将其转义。

到目前为止您尝试的方法中有什么不起作用?请包括您的整个方法,并说明什么不起作用。我用一些已经存在的现有代码替换了原来的问题。测试时,如果我给它
abcSite!='abc*'
I获取
abcSite!=\Qabc*\E
计算结果为True(基于否定匹配的if语句)。为了从逻辑上更容易确保我的逻辑正确,我尝试了
abcSite='abc*'
,计算结果为
false
,这很有效!让我用更多的输入来测试它。