我有一个下面的样本串如何使用正则表达式提取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到匹配的字,用点 –