"("
ve ")"
'dan dize, desen eşleştirmesi veya herhangi bir şey kullanılarak nasıl ayıklanır. Örneğin metinParantez arasındaki metni ayıklamak için desen
O zaman nasıl sadece"Merhaba (Java)" `ise
"Java"
olsun.
Teşekkürler.
"("
ve ")"
'dan dize, desen eşleştirmesi veya herhangi bir şey kullanılarak nasıl ayıklanır. Örneğin metinParantez arasındaki metni ayıklamak için desen
O zaman nasıl sadece"Merhaba (Java)" `ise
"Java"
olsun.
Teşekkürler.
bu deneyin:
String x= "Hello (Java)";
Matcher m = Pattern.compile("\\((.*?)\\)").matcher(x);
while(m.find()) {
System.out.println(m.group(1));
}
veya
String str = "Hello (Java)";
String answer = str.substring(str.indexOf("(")+1,str.indexOf(")"));
@rupinderjeet Siz ve +1 veren iki adam, bu tür yorumları yazmadan/desteklemeden önce cevapların verildiği tarih ve saati kontrol etmelisiniz. – aProgger
List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("\\((.*?)\\)");
Matcher regexMatcher = regex.matcher("Hello This is (Java) Not (.NET)");
while (regexMatcher.find()) {//Finds Matching Pattern in String
matchList.add(regexMatcher.group(1));//Fetching Group from String
}
for(String str:matchList) {
System.out.println(str);
}
ÇIKIŞ
Java
.NET
\\((.+?)\\)
ne anlama geliyor?
Bu normal Anlatım düzeni yüzden \\)
için bu karakteri, aynı şey kaçmak ihtiyacım da RegExp içinde ayrılmıştır olarak (
maç olacak hangi \\(
itibaren başlayacak ve (.*?)
Grubu olarak kabul ()
yılında üstelik herhangi bir karakter sıfır veya daha fazla zaman her şeyi eşleşir biz buluyoruz.
İfadede ["1", "5", "7"] dizeleri nasıl alınır. Sonuç "1", "5" ve "7" olmalıdır. Aşağıdaki gibi kullanalım: 'Pattern regex = Pattern.compile ("\\ [(. *?) \\]"); ' – user1182217
@ user1182217' Pattern regex = Pattern.compile (" (\ ". *?) Desenini kullanabilirsiniz. \ ")"); 've eşleştiriciyi grop 1'i almak için kullanın. –
kadar oylama için oylama (y) – vicky
ben regex kullanarak daha basit bir şey, bu, ama (benim yaptığım gibi) burada topraklarda aynı/benzer soru ile herkes için 3 yıl önce istendi biliyorum: sizin örnekte
String result = StringUtils.substringBetween(str, "(", ")");
result
, "Java" olarak iade edilir. StringUtils kütüphanesini (nispeten basit) dizi manipülasyonu için tavsiye ederim; Uygun olmayan otomatik girişler gibi işleri otomatik olarak yapar. substringBetween için
var açma ve kapama sınırlayıcı aynı olup olmadığına bağlı olarak, bu fonksiyonun iki diğer versiyonlar vardır ve ayırıcı (lar) (ler) de meydana gelip hedef dize birden çok kez.
Propagency with indexOf': http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf%28int%29 – PeterMmm
Şimdiye kadar neler denediniz? İç içe köşeli parantezler ile ne yapmak istersin, ör. "Merhaba (Foo ve (Bar))"? "Merhaba (Foo) ve (Bar)" gibi birden fazla parantez değeri olan durumlar nedir? –