【问题标题】:How to extract text.text information using regular expressions?如何使用正则表达式提取 text.text 信息?
【发布时间】:2016-09-30 12:54:18
【问题描述】:

我有以下示例字符串

ptv.test foo bar cc.any more words

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

谢谢

【问题讨论】:

标签: c# .net regex


【解决方案1】:

您可以使用以下代码:

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+
    

    (一个或多个单词字符,句点,一个或多个单词字符)

    【讨论】:

      【解决方案3】:

      [A-Za-z]+\.[A-Za-z]

      您需要转义句点,因为它是匹配任何内容的正则表达式特殊字符

      【讨论】:

        【解决方案4】:

        您的问题含糊。答案取决于“文本”的实际含义。一些可能性如下:

         [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));   
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多