2011-06-24 12 views
0

私は長い間、正規表現の文字列を得るために働いていますが、何の成功もありません。 希望、ここに助けを求める。 次の形式で文字列がありますregexp - 単語に行を分割する

G/20/EU (picture)/europe 21/ 

または

/House/200 hits/real estate 

または

color/red-green/dark blue/orange/321 

グローバルルールは:文字/(上のテキストを分割する) したがって、次の正規表現作品:([/()]) しかし、私はまた、単一の数字を削除/分割する必要があります。ここでは:20と321が21にはない(「ヨーロッパ21」の1つのフレーズ)または200(「200ヒット」の1つのフレーズ)

ときどき/ 、時々そうではありません。数字は、文字列の最初、最後、または途中で発生することがあります。

G 
EU 
picture 
europe 21 
House 
200 hits 
real estate 
color 
red-green 
dark blue 
orange 

正規表現は次のようになりますどのように誰もがアイデアを持っている:

結果は以下のように簡単な単語やフレーズをすべきですか?

は、おそらくあなたにこの

+0

を、あなたでしょう正しい分割結果を表示しますか? –

+0

また、どの正規表現のフレーバを使用していますか? Perl、PHP、C#、JavaScript、Java、...、...異なるフ​​レーバーは異なる機能を持っています(負のlookbehindなど)。 –

+0

あなたはどの言語を使用していますか?私は数字に問題は見えません...あなたはそれについて詳しく説明できますか? –

答えて

1

あなたの正規表現の風味が前後に見ていない場合、あなたはこれを試すことができます。

[/()]|(?<=\/|^)\d+(?=(?:\/|$)) 

はそれhere on Regexr参照してください。

これは/^または行の開始前がある場合、一連の数字を確認し、そして/又は行$後ろの終わりであろう。
またはあなたの部分のための

+0

@searleaの表現と似ています。しかし、それはより複雑に見える!あなたのソリューションでさらに多くのバリエーションが考えられますか? –

+0

@ Bndr、私はより高度に言うだろう。あなたがlookbehindとlookaheadがやっていることを理解すれば、私の意見では、より長いリストの選択肢を持つよりもはっきりと分かります。 – stema

+0

@ Bndrでは、@searleaから '(^ | \ /)\ d +(\/| $)| [/()]'にソリューションを単純化することができます。これと私の違いは次のとおりです。これらの文字は一致しています。見た目では、それが存在するかどうかだけチェックされますが、一致しません。 [Regexr](http://regexr.com?2u2pi)を参照してください – stema

1

ありがとう:

/^\d+\/|\/\d+\/|\/\d+$|\// 

すなわち、文字列、または文字列の最後に2つのスラッシュまたは数との間の数、またはそれ自身の上だけスラッシュの開始時に数をチェックし..

+0

あなたに感謝します:-) - それは "私の"部分との組み合わせで、そのようなすべてのルックスで正規表現を意味します:/^\ d + \/| \/\ d + \/| \/\ d + $ | \/| [/()] –

0

私はこの例を理解していますが、以下の正規表現は必要な出力を与えるべきです。

void Main() 
{ 
    string testString = @"G/20/EU (picture)/europe 21/"; 

    Regex test = new Regex(@"(\w+[^\w\d]?|\d+)/"); 

    string outputTest = test.Replace(testString, "$1\r\n"); 

    Console.WriteLine(outputTest); 
} 
0

(G)Awkのでは、あなたのような何かを行うことができます。

awk -F "[()/]" '{ for (i=1;i<=NF;i++) { if ($i !~ /^[0-9]*$/) {print $i }}}' <<EOF 
G/20/EU (picture)/europe 21/ 
/House/200 hits/real estate 
color/red-green/dark blue/orange/321 
EOF 
#OUTPUT: 
G 
EU 
picture 
europe 21 
House 
200 hits 
real estate 
color 
red-green 
dark blue 
orange 

かで参照してください。あなたの例のそれぞれについてhttp://ideone.com/2f7lJ

HTH

関連する問題