Насколько я понимаю, matches() должен проверить строку на соотвествие регексу, а replace() соотвествующее место заменить. replace работает так, как и ожидается, а вот matches почему-то не матчит строчку, которая явно подходит под регекс. Я не сумел найти в документации внятного объяснения, или не понял что в нём написано.
Прокомментируйте ситуацию, как обходиться с matches? Можно перед matches оборачивать regex wide-масками, но не стукнет ли это однажды?
Код | public static void main(String[] args) { String regexp = "new StringBuilder"; String source = "123 new StringBuilder().append(FIXMessageTransformer.debugAmend(amend)).append(\". Ticket: \").append(ticket).toString()"; String replacement = "<found here>"; System.out.println("Source:\n"+source+"\nRegexp:\n"+regexp); System.out.println(Pattern.compile(regexp).matcher(source).matches()); System.out.println(Pattern.compile(".*?"+regexp+".*?").matcher(source).matches()); System.out.println(Pattern.compile(regexp).matcher(source).replaceAll(replacement)); }
|
|