2009-07-16 7 views
24

私は、文字列を持っている:カッコ内の文字列を正規表現を使用して置き換えるにはどうすればよいですか?

私だけ残し、括弧と括弧自身の内側のすべてを削除したい
HLN (Formerly Headline News) 

HLN 

私は正規表現でこれを実行しようとしましたが、私のしました難易度は、このパターンである:

"(.+?)" 

私はそれを使用する場合、それは常に私にPatternSyntaxExceptionを与えます。正規表現を修正するにはどうすればよいですか?

答えて

44

括弧は正規表現の特殊文字なので、それらをエスケープして明示的に一致させる必要があります。例えば

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

以前の回答に基づいていますか+?いくつかの括弧で囲まれた部分があるかもしれません。 – glmxndr

+2

Wups、彼女。 – glmxndr

+0

はい、彼女。置いた "?"ちょうど複数の親権者の場合。 @jjnguy:explainationのおかげで。できます! – Lily

8

あなたはparentheticalsを見つけるために、次の正規表現を使用することができます。左括弧の

\([^)]*\) 

\(試合、[^)]*試合以外の任意の数の文字右括弧には\)の一致があります。あなたはJavaの文字列でこれを含めている場合は

、次のような\文字をエスケープする必要があります。

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

bozは今"bar "

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

である以上、空の削除します文字列のいずれかの側から空でない括弧を使用します。

平野正規表現:

\([^\(]*\)

あなたがここにテストすることができます。http://www.regexplanet.com/simple/index.html

私のコードは、彼が望むかもしれない

関連する問題