2016-09-30 38 views
-1

我有一個下面的樣本串如何使用正則表達式提取text.text信息?

ptv.test foo bar cc.any more words 

我希望有一個正則表達式,其可以提取圖案text.text。例如,在上面的字符串應該匹配ptv.testcc.any

感謝

+0

'[A-ZA-Z] + \ [A-ZA -z] +'?或'[az] + \。[az] +'如果不允許有大寫字母 –

+0

'[^。] + \。[^。] +' – spender

+0

http://stackoverflow.com/questions/5696921/c-sharp -regex到匹配的字,用點 –

回答

3

您可以使用下面的代碼:

string s = "ptv.test foo bar cc.any more words"; 
var matches = Regex.Matches(s, @"\w+\.\w+"); 

foreach(Match match in matches) 
{ 
    Console.WriteLine(match.Value); 
} 

,輸出:

ptv.test

cc.any

2
\w+\.\w+ 

(一個或多個單詞字符,期間,一個或多個單詞字符)

1

[A-Za-z]+\.[A-Za-z]

你需要躲避期間,原因是其是匹配任何

regex的特殊字符
0

你的問題是含糊 one。答案取決於「文本」究竟意味着什麼。一些可能性低於:

[a-z]+\.[a-z]+  English lower case letters a..z 
[A-Za-z]+\.[A-Za-z]+ English letters A..Z or a..z 
\p{L}+\.\p{L}+  Any unicode letters 
\w+\.\w+    Any word symbols (letters + digits) 
... 

另一個細節與令人擔憂應「文本」的前面/後面空格或字符串的開始/結束。例如。對於給定的

pt???v.test foo bar cc.an!!!y more words 

應該"v.test""cc.an"被視爲匹配。如果不是,前後需要的圖案後添加\b,如:

\b[a-z]+\.[a-z]+\b 

實現可以是這樣的:

string source = @"ptv.test foo bar cc.any more words"; 

string pattern = @"\b[a-z]+\.[a-z]+\b"; 

string[] matches = Regex 
    .Matches(source, pattern) 
    .Cast<Match>() 
    .Select(match => match.Value) 
    .ToArray(); // let's organize matches as an array 

// ptv.test 
// cc.any 
Console.Write(String.Join(Environment.NewLine, matches)); 
相關問題