30 Mayıs 2019 Perşembe

Pattern Sınıfı

Giriş
Düzenli İfade (Regular Expression veya RegEx) için temel sınıftır.

compile metodu - string
Verilen düzenli ifadeyi bir nesne haline getirir.
Pattern pattern = Pattern.compile("...");
Gördüğüm örnekler
AlphaNumeric = [A-Za-z\\d]+
Numeric = \\d+
Spaces = [ \t]+
Date in DD-MM-YYY =([012]\\d|3[01])-(0\\d|1[012])-(\\d{4})
compile metodu - string + flag
Şöyle yaparız.
Pattern pattern =Pattern.compile("...", Pattern.CASE_INSENSITIVE);
asPredicate metodu
asPredicate metodu yazısına taşıdım

matcher metodu
Matcher döner. Girdi ile düzenli ifadeyi eşleştirir.
String line = "...";
Pattern pattern=Pattern.compile("...");
Matcher matcher=pattern.matcher(line);
splitAsStream metodu
splitAsStream metodu yazısına taşıdım

Diğer
1. Look Ahead ve Look Behind
Açıklaması şöyle.
(?<!\d)  # negative lookbehind to assert previous char is not a digit
\d{2}    # match exact 2 digits
:        # match a colon
\d{2}    # match exact 2 digits
(?!\d)   # negative lookahead to assert next char is not a digit
Negative Lookahead
Belirtilen şey ile başlamayan anlamına gelir.
Örnek
Şöyle yaparız. Burada amaç sayının başındaki 0 rakamlarını silmek. İlk capture group "-" veya boş string olabilir. Daha sonra bir veya daha fazla 0 gelebilir. Sonra negative lookahead ile 0'lardan sonra hemen string'in bitmediğini garanti ederiz. Tüm -000 şeklindeki karakterler - ile yer değiştirir. Tüm 000 şeklindeki karakterler "" yani boş string ile yer değiştirir.
"00000050.43".replaceFirst("^(-?)0+(?!$)", "$1")
Örnek
Şöyle yaparız. Bu / karakterine göre ayırır, ancak / karakterinin satır başında olmaması gerekir.
String[] res = "/token1/token2/token3".split("(?!^)/");
System.out.println(res[0]); // => /token1

Hiç yorum yok:

Yorum Gönder