При условии Unicode и нечувствительности к регистру, шаблон «..» должен соответствовать «FfIsS»?
Звучит как шутка, но я могу это доказать.
Предположения:
Точка соответствует любому отдельному символу.Совпадения с учетом регистра символовs
если и только если это соответствуетs.toUpperCase()
.Все следующее довольно логично и верно в Java:
"ffi".matches(".")
ЛАТИНСКАЯ МАЛЕНЬКАЯ ЛИГАТУРА FFI (U + FB03) - это символ, поэтому он должен соответствовать"ß".matches(".")
LATIN SMALL LETTER SHARP S (U + 00DF) - символ, поэтому он должен соответствовать"ffi".toUpperCase().equals("FFI")
по стандарту Unicode (нет заглавных лигатур FFI)"ß".toUpperCase().equals("SS")
по стандарту Unicode (есть заглавная S, но она не привыкает)"FfI".toUpperCase().equals("FFI")
очевидно"sS".toUpperCase.equals("SS")
очевидноТаким образом, предполагая, что первая точка в регулярном выражении означаетffi
а второй дляß
, регулярное выражение должно соответствовать "FFISS" и из-за нечувствительности к регистру также "FfIsS".
I действительно Надеюсь, что-то не так, в противном случае регулярные выражения станут довольно непригодными.
Вопросы:
Что не так с моим "доказательством"?Что означает «без учета регистра», если мое второе предположение не выполняется?