【问题标题】:extract a string from从中提取一个字符串
【发布时间】:2014-11-12 07:09:19
【问题描述】:

我有以下字符串

29  This is a Page1  6754001  1,2,3,4
6755  This is a Page2 56-0 7654564 
 This is a Page3  67543-986xx 8 12
 This is (Page5)& Container 876-0 6 8xp

从上面,我需要提取下面的文字

This is a Page1 
 This is a Page2
 This is a Page3
 This is (Page5)& Container

第一个数字和文本之间总是有一个空格,所以 2129 和 This is page1 之间有一个空格。有时第一个数字是 像 2129 一样被省略了。文本和下一个数字之间总是有一个空格,因此 This is a Page1 和 6754001 之间有一个空格,并且 有时可以有两个空格。 我只需要提取这些行 这些行总是在空格之后开始,所以它可以是

29 This is page1

它们后面总是有一个空格,有时是一个空格,有时是两个空格。

我们将不胜感激。

【问题讨论】:

    标签: c# regex vb.net


    【解决方案1】:

    您可以尝试使用下面的正则表达式来获取开头以可选数字开头并后跟一个或多个空格和一个数字的文本。

    正则表达式:

    ^(?:\d+)?\s*(.*?)\s+\d.*
    

    替换字符串:

    $1
    

    DEMO

    通过字符串替换,

    代码

    string str = @"29  This is a Page1  6754001  1,2,3,4
    6755  This is a Page2 56-0 7654564 
     This is a Page3  67543-986xx 8 12
     This is (Page5)& Container 876-0 6 8xp";
    string result = Regex.Replace(str, @"(?m)^(?:\d+)?\s*(.*?)\s+\d.*", "$1");
    Console.WriteLine(result);
    Console.ReadLine();
    

    输出:

    This is a Page1
    This is a Page2
    This is a Page3
    This is (Page5)& Container
    

    IDEONE

    通过Matches方法。

    string str = @"29  This is a Page1  6754001  1,2,3,4
    6755  This is a Page2 56-0 7654564 
     This is a Page3  67543-986xx 8 12
     This is (Page5)& Container 876-0 6 8xp";
    Regex rgx = new Regex(@"(?m)^(?:\d+)?\s*(.*?)\s+\d.*");
    foreach (Match m in rgx.Matches(str))
    Console.WriteLine(m.Groups[1].Value);
    

    IDEONE

    【讨论】:

      【解决方案2】:
      ^\d*.*?\s+|(?<=\s)\d{2,}.*(?=\s|$)
      

      试试这个。这将适用于您的最新要求。查看演示

      http://regex101.com/r/gG5fF6/4

      【讨论】:

      • @Anjali5 试试这个正则表达式来满足你在另一个问题中提出的最新要求
      • 我试过这个 Dim rgx As Regex = New Regex("^\d*.*?\s+|(?
      • @Anjali5 你必须用空白替换。不要匹配
      • 替换为空白?我应该用什么替换空白吗?
      • @Anjali5 Regex.Replace(str, @"(?m)^\d*.*?\s+|(?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 2016-02-06
      相关资源
      最近更新 更多