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, Pattern
yine de yorumlayacaktır \;
olarak ;
. İşte birkaç örnek daha:
>
\>
eşdeğer olan olur>
[
olur \[
ve kaçan formu olan[
8
hala 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]
.