【问题标题】:Extracting days from a string Regex从字符串正则表达式中提取天数
【发布时间】:2020-11-27 00:55:45
【问题描述】:

我正在尝试使用 C# 中的正则表达式组从以下字符串中提取日期,

"RRULE:FREQ=MONTHLY;UNTIL=20211126T143000Z;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1"

我是正则表达式的新手,并查看了各种网站以尝试编写一个表达式,到目前为止我得到的表达式如下

(?:BYDAY=)([A-Z,]*);

哪些匹配

MO,TU,WE,TH,FR;

作为一个整体,我可以在拆分中使用“,”来实现我想要的,我想知道是否有一种方法可以纯粹在正则表达式中做到这一点。

【问题讨论】:

标签: regex


【解决方案1】:

如果支持后视中的量词,您可以使用:

(?<=BYDAY=[A-Z,]*)[A-Z]+

说明

  • (?&lt;= 正面向后看,断言左边是
    • BYDAY=[A-Z,]* 匹配 BYDAY= 后跟 0 次或多次 A-Z 或 ,
  • ) 近距离观察
  • [A-Z]+ 匹配 1+ 个字符 A-Z

.Net regex demo | C# demo by WiktorStribiżew

或者,您可以使用 \G 锚点来获取迭代匹配并捕获第 1 组中的值

(?:\G(?!^)|BYDAY=)([A-Z]+),?

Regex demo

【讨论】:

    猜你喜欢
    • 2014-08-25
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 2011-12-05
    • 2021-10-19
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多