2009-09-26 17 views
34

Anladığım kadarıyla, ters eğik çizgi (\.) herhangi bir karakterin bir karakteri anlamına gelir? Ters eğik çizgi bir kaçış olduğu için, ters eğik çizgi ("\\.")Java düzenli ifade value.split ("\."), "Ters eğik çizgi" karakteri böler mi?

Bu bir dizeye ne yapar? Bunu, üzerinde çalıştığım mevcut bir kodda gördüm. Anladığım kadarıyla, dizeyi tek tek karakterlere bölebilir. Bunu neden String.toCharArray() yerine yapıyorsunuz? Bu, dizeyi, dizideki her dize için yalnızca bir karakter içeren bir dizi diziye böler.

cevap

68

Tahminimce, ters eğik çizgi ('\') karakterleri, Java Dize değişmezlerinde kaçış karakterleri olduğunu kaçırıyorsunuzdur. Yani bir Java String olarak yazılan bir regex içinde bir '\' kaçış kullanmak istediğinizde, onu kaçmak gerekir; Örneğin.

Pattern.compile("\."); // Java syntax error 

// A regex that matches a (any) character 
Pattern.compile("."); 

// A regex that matches a literal '.' character 
Pattern.compile("\\."); 

// A regex that matches a literal '\' followed by one character 
Pattern.compile("\\\\."); 

String.split(String separatorRegex) yöntem düzenli ifade eşleşen alt ayrılmış altdizgelerin içine bir String böler. Bu nedenle str.split("\\."), str'u, tek bir değişmez "ile ayrılan alt dizelere böler." karakter.

+0

:: Tamam çalışıyor! Ama buna neden daha fazla dayanabilirsin, neden dört ters eğik çizgi gibi? Üç tane olmamalı mı? – Oliver

+2

Bir sözdizimi ters eğik çizgisinde bir kez kaçmak zorundadır. Bu 2 verir. Bu 2 ters eğik çizgi her ikisi de bir String literalde kaçması gerekir. Bu 4 yapar. Üç ters eğik çizgi size bir Java derleme hatası verir. Deneyin ve kendiniz görün. –

+0

Neden Pattern.compile ("\."); bir sözdizimi hatası mı oluşturuyorsunuz? – adub3

7

Normal ifadeler "." belirttiğiniz gibi herhangi bir karakterle eşleşir. Ancak kaçan bir nokta "\." literal nokta karakterleri eşleşir. Böylece 192.168.1.1 "\" üzerinde bölünmüştür. {"192", "168", "1", "1"} ile sonuçlanır.

Sizin ifadeleriniz tamamen açık değil, ama bence bu sizin sorduğunuz şeydir.

İlgili konular