2010-01-30 21 views
1

誰能幫我做一個正則表達式或給我一個很好的解決方案,可以分割/檢查以下字符串:幫助製作一個好的正則表達式?

「< 2342Flsdn3Z> < 9124Fsflj20>」

一切都開始於一個「<」和6 caracter是一個「F」,字符串以「>」結尾 是否有可能使正則表達式可以找到像這樣的「字符串」?

回答

5

如何:<.{4}F[^>]+>

它開<,其次是任意4個字符,F匹配,然後任何東西,直到關閉>(通過匹配任何不是>)。

string input = "<2342Flsdn3Z><9124Fsflj20>"; 
string pattern = "<.{4}F[^>]+>"; 
foreach (Match m in Regex.Matches(input, pattern)) 
{ 
    Console.WriteLine(m.Value); 
} 

編輯:製作好的正則表達式是明確指定要匹配的模式的一部分。例如,您提出問題的方式留下了一些細節。只要F是你指定的地方,我就會用我的模式來回應任何角色。

爲了更好的正則表達式,你可能已經告訴了我們一些事情:F之前

  • 字符數將永遠是個數字,長度爲4:\d{4}[0-9]{4}
  • 個字符F之後將是X的長度(6?),並只能是數字和字母:[\dA-Z]{6}
  • 案例是不敏感的:使用RegexOptions.IgnoreCase(.NET),或使用[a-zA-Z]
  • 國家你的意圖:你匹配呢?試圖提取內在價值?分裂是什麼意思?拆分什麼?
  • 指定所使用的語言:C#,Python和Perl等(你做這個)
+0

這將匹配標點符號以及數字和字母 - 這可能是好的,但你應該意識到這一點。 – tvanfosson

+0

@tvanfosson同意,我保持開放,因爲OP沒有具體說明:) –

0

容易:

<\d{4}F\w+> 

或者,只得到字符串:

(?<=<)\d{4}F\w+(?=>) 
0

我正在做一些假設,括號內的一切必須是一個單詞字符和尾隨括號前至少有一個,但也許是任意數量的單詞字符。

var regex = new Regex("<\w{4}F\w+>"); 
1

是的。 <[A-Za-z\d]{4}F[A-Za-z\d]{6}>

<後跟任意4個字母或數字後用F後跟任意6個字母或數字遵循>

我的假設它的F.後,總是停在六,您可以修改重複,以滿足您的需求。

原提議的解決方案以節約有效的註釋,以便其他人可以從我的錯誤中學習:[\d\w]{4}F[\d\w]{6}>

+2

\ w將匹配字母或數字以及下劃線。 – tvanfosson

+0

非常感謝您的糾正。 –