Lines 632-654
Link Here
|
632 |
java.util.regex.Pattern pattern = caseSensitive ? |
632 |
java.util.regex.Pattern pattern = caseSensitive ? |
633 |
java.util.regex.Pattern.compile(regex) : |
633 |
java.util.regex.Pattern.compile(regex) : |
634 |
java.util.regex.Pattern.compile(regex, java.util.regex.Pattern.CASE_INSENSITIVE); |
634 |
java.util.regex.Pattern.compile(regex, java.util.regex.Pattern.CASE_INSENSITIVE); |
635 |
String newText = source; |
|
|
636 |
final String replacementQuoted = Matcher.quoteReplacement(replacement); |
635 |
final String replacementQuoted = Matcher.quoteReplacement(replacement); |
637 |
Matcher matcher = pattern.matcher(newText); |
636 |
Matcher matcher = pattern.matcher(source); |
638 |
int totalReplaced = 0; |
637 |
int totalReplaced = 0; |
639 |
while(true) { |
638 |
StringBuffer result = new StringBuffer(); // NOSONAR Matcher#appendReplacement needs a StringBuffer |
640 |
String previousText = newText; |
639 |
while(matcher.find()) { |
641 |
newText = matcher.replaceFirst(replacementQuoted); |
640 |
matcher.appendReplacement(result, replacementQuoted); |
642 |
matcher = pattern.matcher(newText); |
641 |
totalReplaced++; |
643 |
if(newText.equals(previousText)) { |
|
|
644 |
break; |
645 |
} else { |
646 |
totalReplaced++; |
647 |
} |
648 |
} |
642 |
} |
|
|
643 |
matcher.appendTail(result); |
649 |
|
644 |
|
650 |
return new Object[]{ |
645 |
return new Object[]{ |
651 |
newText, |
646 |
result.toString(), |
652 |
totalReplaced |
647 |
totalReplaced |
653 |
}; |
648 |
}; |
654 |
} |
649 |
} |