2010-09-09 40 views
4

我需要構建一個正則表達式。我想匹配的字符串始終以\開頭,然後是4或5個數字,然後是另一個\正則表達式,在「」和「」之間匹配長度爲4或5位數字的字符串

例如。

  1. 歡迎回家< \ 217.163.24.49 \ 7778 \假,
  2. 歐元服務器\ 217.163.26.20 \ 7778 \假,
  3. Instagib!)\ 85.236.100.115 \ 8278 \假,

在第一個例子中,我需要「7778」。在第二個例子中,我需要「7778」。在第三個例子中,我需要「8278」。

這4位數字實際上是一個端口號,它是每一行中只有這一系列字符(例如\ 7778 \)出現的唯一時間。有時端口號是4位數字,有時是5。

我已經知道如何保留字符串供以後使用Regex.Match.Success,它只是我在這裏尋找的實際正則表達式模式。

感謝

回答

6
var match=Regex.Match(@"\1234\",@"\\(?<num>\d{4,5})\\"); 


if(match.Success) 
{ 
    var numString=match.Groups["num"].Value; 
} 

或者(如果你不喜歡使用組)可以使用lookbehead和lookahead斷言來確保4-5位數匹配被斜槓包圍:

var match=Regex.Match(@"\1234\",@"(?<=\\)\d{4,5}(?=\\)"); 
if(match.Success) 
{ 
    var numString=match.Value; 
} 
1

嘗試(\\[\d]{4,5}\\)

+0

爲什麼方括號圍繞\ d?這只是一個成員的集合。 – JasonFruit 2010-09-09 11:12:31

+0

好吧,我這樣做,它實際上保持「\」的 – brux 2010-09-09 11:13:14

+0

我需要模仿當我使用regex.match.success獲取匹配的字符串是否有一種方法來省略「\」的? – brux 2010-09-09 11:20:18

3
@"\\(\d{4,5})\\" 

\\匹配反斜槓,\d匹配位數,{4,5}爲 「4至5」。圍繞\d{4,5}的圓括號使您可以通過.Groups[1]訪問號碼部分。

+0

嗨sepp2k,我試過這個,並保持4/5位數字的「\」任一側。我只需要編號 – brux 2010-09-09 11:18:29

+0

@brux:正如我在編輯中所說的那樣,如果將括號放在'\ d {4,5}'的周圍,該編號將位於第一個捕獲組中。 – sepp2k 2010-09-09 11:19:45

+0

var match1 = Regex.Match(temp,@「\\\(\ d {4,5})\\」); if(match1.Success)ipaddr.Text = match1.Captures [0]。的ToString();文本框中的字符串是\ 7778 \ not 7778:s – brux 2010-09-09 11:25:24

1

我開發了一個簡單的工具來驗證正則表達式與示例字符串;這是C#中的示例的有效字符串,但它不是'嚴格的'!

(?<name>.+?)\\(?<ip>[0-9.]+)\\(?<port>[0-9]{4,5})\\(?<boolean>[False|True]+)

0
\\[0-9]{4,5}\\ 

\它應與\開始(另一個\是逃避)
[0-9]它可以是任何在集合中提到的數量(0,1,2,3 ... 9)
{4,5}上一組可以出現4〜5倍
\應該以\結尾(另一個\是逃避)

相關問題