User will input some filter criteria -- how can I turn it into a regular expression for String.match
- by envinyater
I have a program where the user will enter a string such as
PropertyA = "abc_*" and I need to have the asterisk match any character.
In my code, I'm grabbing the property value and replacing PropertyA with the actual value. For instance, it could be abc_123. I also pull out the equality symbol into a variable.
It should be able to cover this type of criteria
PropertyB = 'cba'
PropertyC != '*-this'
valueFromHeader is the lefthand side and value is the righthand side.
if (equality.equals("=")) {
result = valueFromHeader.matches(value);
} else if (equality.equals("!=")) {
result = !valueFromHeader.matches(value);
}
EDIT:
The existing code had this type of replacement for regular expressions
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);
It doesn't like the underscore here...
abcSite_123 != abcSite_123 (evaluates to true)
abcSite_123$1.matches("abcSite$1123")
It doesn't like the underscore...