我有一個下面的樣本串如何使用正則表達式提取text.text信息?
ptv.test foo bar cc.any more words
我希望有一個正則表達式,其可以提取圖案text.text。例如,在上面的字符串應該匹配ptv.test
和cc.any
感謝
我有一個下面的樣本串如何使用正則表達式提取text.text信息?
ptv.test foo bar cc.any more words
我希望有一個正則表達式,其可以提取圖案text.text。例如,在上面的字符串應該匹配ptv.test
和cc.any
感謝
您可以使用下面的代碼:
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
\w+\.\w+
(一個或多個單詞字符,期間,一個或多個單詞字符)
[A-Za-z]+\.[A-Za-z]
你需要躲避期間,原因是其是匹配任何
regex的特殊字符你的問題是含糊 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));
'[A-ZA-Z] + \ [A-ZA -z] +'?或'[az] + \。[az] +'如果不允許有大寫字母 –
'[^。] + \。[^。] +' – spender
http://stackoverflow.com/questions/5696921/c-sharp -regex到匹配的字,用點 –