我有以下示例字符串
ptv.test foo bar cc.any more words
我想要一个可以提取patter text.text的正则表达式。例如,在上面的字符串中,它应匹配ptv.test
和cc.any
由于
答案 0 :(得分: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
答案 1 :(得分:2)
\w+\.\w+
(一个或多个单词字符,句点,一个或多个单词字符)
答案 2 :(得分:1)
[A-Za-z]+\.[A-Za-z]
你需要逃避这段时间,因为它是匹配任何东西的正则表达式特殊字符
答案 3 :(得分:0)
你的问题是模糊的。答案取决于“文本”实际意味着什么。有些可能性如下:
[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)
...
要关注的另一个细节是“text”应该在空格或字符串start / end之前/之后。例如。对于给定的
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));