2016-09-30 92 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));