2012-05-09 19 views
0

私はこのような文字列を持っています。正規表現パターンを使用して文字列をコロンで分割する

ars:a:currency (Argentina!: Pesos): 

私はコロンを使用して文字列を分割する必要がありますが、角括弧内のコロンは分割しないでください。この文字列を分割する正規表現が必要です。

私の出力は

ars 
a 
currency (Argentina!: Pesos)** 

ヘルプは高く評価されてのように:)

+6

[何を試しましたか?](http://mattgemmell.com/2008/12/08/what -have-you-tried /) – user1329572

+0

@ user1329572:十分に公正ですが、解決策を概念化するために正規表現についてかなり知っておく必要がありますので、実際には試してみることはできません。 –

答えて

1

の場合は、ネストされたかっこがないことを確信していれば、単一の正規表現で実行できます。その場合、次のカッコが閉じていない場合にだけコロンで分割することができます。

String[] splitArray = subjectString.split(
    "(?x): # Multiline regex: Match a colon\n" + 
    "(?!  # only if it's impossible to match the following at this point:\n" + 
    " [^()]* # any number of characters besides parentheses\n" + 
    " \\)  # followed by a closing parenthesis\n" + 
    ")  # End of lookahead assertion"); 
+0

ありがとう、Tim Pietzcker ...それは働いた:) – Gladstone

0

単一の正規表現で動作するつもりはないはずです。あまり複雑にすることなくできることはString.split("[()]")で、:で他のすべての配列インデックスで文字列を分割し、最後に連結し直します。

+0

いくつかの制約(ネストしたかっこはありません)を指定すると、1つの正規表現でそれを行うことができます。 (あなたのソリューションはOPの例でも機能しませんでした) –

+0

@TimPietzckerはい、私はあなたの素敵な解決策を見ました。この瞬間のシングルupvoteは私からです:)そして私のアプローチには何が問題なのですか? –

0

おそらくこのような何かはあなたのために働くだろう:

strは、あなたの文字列である
String[] tok = str.split(":", 3); 

関連する問題