2016-01-14 22 views
-1
string STR = "The Quick Brown Fox Jumps"; 
string PTR = "[A-Z][a-z]+ [A-Z][a-z]+"; 
MatchCollection MCZ = Regex.Matches(STR, PTR) ; 
if (MCZ.Count > 0)   
{ 
    string RTN =""; 
    foreach (Match x in MCZ) 
    RTN += x.Value + "\n" ; 
    MessageBox.Show(RTN); 
} 
else 
    MessageBox.Show("Noop"); 

嗨... 我的結果是這樣的;RegExp更精細的結果

The Quick 
Brown Fox 

但是,我想有;

The Quick 
Quick Brown 
Brown Fox 
Fox Jumps 

好的提示,請!

問候。

+2

有沒有使用正則表達式做這個的幾種更好的方法... – joaumg

+0

@joaumg謝謝評論。上面的代碼是簡短的版本,我的RegExp有點長,有點複雜。對我來說,RegExp是一個重要的條件。 – Jason

+0

我試圖找出「起始位置選項/第一個匹配的位置返回選項」,但失敗了。他們都是「盲目跑」。 – Jason

回答

0

嘗試: (?<=(?<v>\w+)\s+)(?<v>\w+)

我不能鏈接的直接結果regexstorm.net(因爲有括號這將無法正常工作?!?!?)但試一試http://regexstorm.net/tester

請參閱表格。每場比賽有兩個捕獲第V

SAMPLE

using System; 
using System.Linq; 
using System.Text.RegularExpressions; 

public class Test 
{ 
    public static void Main() 
    { 
     var input = "The Quick Brown Fox Jumps"; 

     var regex = new Regex(@"(?<=(?<v>\w+)\s+)(?<v>\w+)"); 
     foreach (var match in regex.Matches(input).Cast<Match>()) 
     { 
      var value = string.Join(" ", match.Groups["v"].Captures.Cast<Capture>().Select(x => x.Value)); 

      Console.WriteLine(value); 
     } 
    } 
} 

輸出將被預期。

+0

看起來不錯,真的很不錯。我會馬上試試.j ThanKSSSS – Jason

+0

看起來不錯,真的很好。 工程好,真好。 ThanKSSSS !!我喜歡這個。 – Jason

0

正如我所說的,有做的更好的辦法...

using System; 
using System.Linq; 

public class Test 
{ 
    public static void Main() 
    { 
     string str = "The Quick Brown Fox Jumps"; 

     string result = ""; 

     var tokens = str.Split(' '); 

     for(int i = 0; i < tokens.Length - 1; i += 1) { 
      result += tokens[i] + ' ' + tokens[i + 1] + "\n"; 
     } 

     Console.WriteLine(result); 
    } 
} 
+1

感謝數百萬。這不是一個答案,但這是一個非常好的起點。我可以在你的好結果上運行RegExp。問候。 – Jason