【问题标题】:How to get the second value using regex如何使用正则表达式获取第二个值
【发布时间】:2015-03-29 15:47:54
【问题描述】:

我的文本文件中有两个日期值,我想使用正则表达式查找第二个日期,我的文本如下所示

发件人:假人。收件人:虚拟二页:1/2 日期:2014 年 12 月 10 日

Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Nulla 在 bibendum odio。 Aliquam turpis nisl,发酵后的 eget,placerat id ante。 Etiam non lacus nisl。 Nullam id tincidunt 精英

姓名:dummy 3 日期:2014 年 12 月 11 日

Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Nulla 在 bibendum odio。 Aliquam turpis nisl,发酵后的 eget,placerat id ante。 Etiam non lacus nisl。 Nullam id tincidunt 精英

我想获得第二个日期12/11/2014我当前的正则表达式如下所示

(DATE:)\s*(?<PLAYDATE>\d{1,2}[/|-]\d{1,2}[-|/](?:\d{4}|\d{2})).*\r\n

它返回第一次约会我是正则表达式的新手,所以请帮助我 谢谢

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    您需要打开不区分大小写的修饰符i 才能进行不区分大小写的匹配。

    (?is)(DATE:)\s*(?<PLAYDATE>\d{1,2}[/-]\d{1,2}[-/](?:\d{4}|\d{2}))(?!.*\bDate:)
    

    DEMO

    (?!.*\bDate:) 断言日期后面的字符串不会包含另一个Date: 子字符串。

    【讨论】:

    • 如果我想仅针对包含字符串 dummy one 的特定文本对此进行限制,我该如何实现
    • 还有一个疑问如何防止这个表达式为其他文本执行
    • 只需在负前瞻(?!...)中添加要忽略的字符串@
    【解决方案2】:

    只需参加第二场比赛。假设file是文本所在的位置,你可以这样做

    Regex.Matches(file, @"\d{2}/\d{2}/\d{4}/")[1].Value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多