Giriş
Şu satırı dahil ederiz
import java.util.regex.Matcher;
Bu sınıfın ana kullanım amacı Capture Group'lara erişmek. Matcher nesnesi Pattern tarafından yaratılır
find metodu
Eşleşmeleri teker teker bulur.
Örnek
Şöyle yaparız.
String line = "XYZ Q|1|^123456<CR>";
Pattern queryRegex = Pattern.compile("Q\\|\\d\\|(.+?)<CR>");
Matcher queryMatcher=queryRegex.matcher(line);
if (queryMatcher.find()) {
System.out.println("Group 0: " + queryMatcher.group(0));
System.out.println("Group 1: " + queryMatcher.group(1));
}
İlk çıktı her zaman tüm eşleşmedir. İkinci sonuç ise ilk gruptur.Group 0: Q|1|^123456<CR>
Group 1: ^123456
ÖrnekBazen find metodunu döngü içinde kullanmak gerekir.
String s = "...";
Matcher m = Pattern.compile("[^,()]+|\\([^)]*\\)").matcher(s);
while (m.find())
System.out.println(m.group());
group metodugroup (0) değerini yani tüm eşleşmeyi verir.
Örnek
$...$ arasındaki kelimeleri bulmak için şöyle yaparız.
String x = "Hey my name is $name$; I have $years$ years old," +
"and I love play $sport$ and I live in $country$ !";
Pattern p = Pattern.compile("\\$\\w+\\$");
Matcher m = p.matcher(x);
Map<String, Integer> map = new LinkedHashMap<>();
while(m.find()) {
String in = m.group().substring(1,m.group().length()-1);
map.put(in, in.length());
}
ÖrnekŞöyle yaparız.
Pattern p = Pattern.compile("(?<!\\d)\\d{2}:\\d{2}(?!\\d)");
Matcher m = pattern.matcher(inputString);
if (m.find()) {
System.err.println("Time: " + m.group());
}
group metodu - intBelirtilen yakalama grubunu döndürür.
Örnek
Elimizde şöyle bir string olsun.
String timeStr = "10:15:34";
Şöyle yaparız.Pattern p = Pattern.compile("(\\d+):(\\d+):(\\d+)");
Matcher m = p.matcher(timeStr);
if (m.matches()) {
int hours = Integer.parseInt(m.group(1));
int minutes = Integer.parseInt(m.group(2));
int seconds = Integer.parseInt(m.group(3));
...
}
groupCount metoduTüm eşleşen grupları verir. Şöyle yaparız.
String str="asd14sd67fgh007";
Pattern pattern = Pattern.compile("\\w+([0-9]+)\\w+([0-9]+)");
Matcher matcher = pattern.matcher(str);
for(int i = 0 ; i < matcher.groupCount(); i++) {
matcher.find();
System.out.println(matcher.group());
}
matches metoduVerilen string ile düzenli ifadenin tam olarak eşleşip eşleşmediğini döner. C#'taki RegEx.IsMatch metodu ile aynıdır.
String s = "...";
Pattern pattern = Pattern.compile("...");
Matcher matcher = pattern.matcher(s);
// Check if pattern matches
if (matcher.matches()) {
...
}
quoteReplacement metodu
Açıklaması şöyle
Use Matcher.quoteReplacement(java.lang.String) to suppress the special meaning of these characters, if desired.
Örnek
Şöyle yaparız
String content = "<xxx.xx.name>xxx.xxx.com:111</xxx.xx.name>";
String destination = Matcher.quoteReplacement("${VAR}");
String source = "xxx.xxx.com:111";
content = content.replaceAll(source, destination);
Çıktı olarak şunu alırız
<xxx.xx.name>${VAR}</xxx.xx.name>
Ne işe yarar bilmiyorum. Şöyle yaparız.
Matcher matcher = ...;
matcher.reset();
results metodu
results metodu yazısına taşıdım
Hiç yorum yok:
Yorum Gönder