オブジェクトを使用して、文字列内のすべての出現を正規表現に置き換えようとしてい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
me が返されましたI-i-I-i-I-i
。
奇数のダッシュ (4x+1) が既に一致しているためだと思いi
ます。それを許可することは可能ですか?