Pattern.quote(String s)İstediğin şeyi yapan türden. Ancak arzulanan bir miktar bırakıyor; aslında tek tek karakterlerden kaçmaz, sadece dizeyi\Q...\E .
Tam olarak aradığınızı yapan bir yöntem yoktur, ancak iyi haber şu ki, bir Java normal ifadesindeki tüm özel karakterlerden kaçmak aslında oldukça basittir:
regex.replaceAll("[\\W]", "\\\\$0")
Bu neden işe yarıyor? Belgeleme, Patternözellikle kaçınılması gerekmeyen alfabetik olmayan karakterlerin kaçmasına izin verildiğini söylüyor:
Kaçan bir yapıya işaret etmeyen herhangi bir alfabetik karakterden önce ters eğik çizgi kullanmak bir hatadır; bunlar, normal ifade dilinin gelecekteki uzantıları için ayrılmıştır. Alfabetik olmayan bir karakterden önce, bu karakterin çıkış yapılmamış bir yapının parçası olup olmadığına bakılmaksızın bir ters eğik çizgi kullanılabilir.
Örneğin, ;normal ifadede özel bir karakter değildir. Bunu kaçış Ancak, Patternyine de yorumlayacaktır \;olarak ;. İşte birkaç örnek daha:
>\>eşdeğer olan olur>
[olur \[ve kaçan formu olan[
8hala 8.
\)\\\)kaçan \ve (birleştirilmiş biçimleri haline gelir .
Not: Anahtar, "alfabetik olmayan" ifadesinin tanımıdır ve bu, dokümantasyonda gerçekten " sözcük olmayan " karakterler veya karakter kümesinin dışındaki karakterler anlamına gelir [a-zA-Z_0-9].