如何使用正则表达式提取text.text信息?

时间:2016-09-30 12:54:18

标签: c# .net regex

我有以下示例字符串

ptv.test foo bar cc.any more words

我想要一个可以提取patter text.text的正则表达式。例如,在上面的字符串中,它应匹配ptv.testcc.any

由于

4 个答案:

答案 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));