我正在尝试使用对象用正则表达式替换字符串中的所有出现Pattern
,但它只替换奇怪的出现:
final Pattern p = Pattern.compile("(^|\\W|\\\\N)(recursive)(\\W|$)", Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
System.out.println(p.matcher("i-i-i").replaceAll("$1I$3"));
这让我回想起:
I-i-I
但我还需要匹配中间的 I ,但不知何故它没有抓住这一点。我还尝试了一个简化的正则表达式(^|-)(I)($|-)
,并尝试对i-i-i-i-i-i
返回的我做同样的事情I-i-I-i-I-i
。
我猜这是因为奇数破折号(在 4x+1 处)已经匹配,所以它们不能第二次匹配偶数i
。有可能允许吗?