2009-07-16 33 views

cevap

44

Parantezler normal ifadelerde özel karakterler olduğundan, bunları açık bir şekilde eşleştirmek için bunlardan kaçmanız gerekir. Örneğin

:

"\\(.+?\\)" 
+3

önceki cevaplar dayanmaktadır +? Birden fazla parantezli parça varsa. – glmxndr

+2

Wups, o. – glmxndr

+0

evet, o. Koydum "?" sadece birden fazla parantez durumunda. @jjnguy: açıkladığınız için teşekkürler. İşe yarıyor! – Lily

8

Sen parantez bulmak için şu normal ifadeyi kullanabilirsiniz:

\([^)]*\) 

sol parantez üzerinde \( maçları, [^)]* dışındaki karakterlerin herhangi numarasıyla eşleşen Sağ parantez ve \) sağ parantez üzerinde eşleşir. Eğer bir java dizede bu dahil ediyorsanız

, aşağıdaki gibi \ karakterlerden kurtulmak gerekir:

String regex = "\\([^)]*\\)"; 
3
String foo = "bar (baz)"; 
String boz = foo.replaceAll("\\(.+\\)", ""); // or replaceFirst 

boz şimdi "bar "

11
String foo = "(x)()foo(x)()"; 
String cleanFoo = foo.replaceAll("\\([^\\(]*\\)", ""); 
// cleanFoo value will be "foo" 

yukarıda boş kaldırır ve dizenin her iki tarafından boş olmayan parantez.

düz regex:

\([^\(]*\)

Burada test edebilirsiniz. http://www.regexplanet.com/simple/index.html

Kodum O isteyebilirsiniz

İlgili konular