ユーザーが次のような文字列を入力するプログラムがあり
PropertyA = "abc_*"
、アスタリスクを任意の文字に一致させる必要があります。
私のコードでは、プロパティ値を取得PropertyA
して実際の値に置き換えています。たとえば、abc_123
. また、等号を変数に取り出します。
このタイプの基準をカバーできる必要があります
PropertyB = 'cba'
PropertyC != '*-this'
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")
アンダースコアが気に入らない...