2016-05-27 8 views
-1

以下は、いくつかの入力例であり、大文字で始まる方法:正規表現を持つ2つの貼り言葉、1つのALL CAPSを分割し、他の一つは

  • UIHint ==> UI +ヒント

  • RSSReader ==> RSSリーダー+

  • たIPAddress ==> IPアドレス+

私はミリアンペア

IPAddress 
IP 
Address 
A 
ddress 

しかし、使用して:この

([AZ] +)(([AZ])([AZ] +))

static void Main(string[] args) 
    { 
     string input = "IPAddress"; 
     var result = Regex.Matches(input, "([A-Z]+)(([A-Z])([a-z]+))"); 
     foreach (Match match in result) 
     { 
      foreach (var item in match.Groups) 
      { 
       Console.WriteLine(item); 
      } 
     } 
    } 

、これが出力されたようなデ何かMatch Groupsには、 "IPAddress"の "A"と "dress"も含まれています。たとえば、私はそれらを望んでいません。

マッチグループのメイン入力(IPAddress)、「アドレス」、「IP」だけが必要です。

だから正規表現パターンをどのように変更すればよいですか?

+0

環境保護言語? – ClasG

+0

それは必要ですか?あなたは言語としてc#を取ることができます。 @ClasG –

+0

@RezaAhmadi:あなたの[regex works](https://regex101.com/r/oU4cI0/1)。 'IPAddress'は一致するはずです。なぜそれはいけないのですか? –

答えて

2

どの程度

([A-Z]+)([A-Z]\w*) 

Check it out here at regex101

2つのキャプチャグループに2つの部分があります。

編集:Adressの不一致が修正されました。

+1

再度、OP [regexはうまくいく](https://regex101.com/r/wH4oL1/2)。 –

+0

私は$ 3または$ 4の置換を望んでいません@WiktorStribiżew –

+0

@RezaAhmadi:あなたが何を言いたいのか分かりません。追加のキャプチャグループが必要ない場合は、なぜそれらを紹介するのですか?しかし、私が言うように、あなたの最初の正規表現が働いています。 ** **すべての言語で単語をマッチさせたい場合を除きます。現在の文字はASCII文字にのみ一致します。 –

関連する問題