Regex,它应该包含短语和任何顺序的匹配组



我正在检查一个字符串中的短语"Alla dagar";由CCD_ 1主持或跟随,并且它可能包含也可能不包含其间的换行符。

示例:

### Item 1 - Should match
8-17
Alla dagar
### Item 2 - Should match
Alla dagar
08-21
### Item 3 - Should not match
8-17
### Item 4 - Should match
7 - 9 Alla dagar
### Item 5 - Should match
Alla dagar 17-23

我想出了两个正则表达式,但我都无法工作。第一个是这个:

^(?=.*s|Alla dagar)(?=(?<from>d+) ?- ?(?<to>d+)).*$

我写的另一个正则表达式也不起作用,因为它不是独占的。如果";alla dagar";不存在,因为这些是可选的。

^((?:s|Alla dagar))?n*?((?<from>d+) ?- ?(?<to>d+))n*?((?:s|Alla dagar))?n?$

我的问题是,如何使用((?<from>d+) ?- ?(?<to>d+))进行匹配,并要求短语Alla dagar存在于字符串中?

您可以使用

(?<from>d+)s*-s*(?<to>d+)s*Alla dagar|Alla dagars*(?<from>d+)s*-s*(?<to>d+)

请参阅regex演示。确保使用PCRE_INFO_JCHANGED标志(如果要将正则表达式合并到正则表达式本身中,则可以使用正则表达式开头的(?J)),以便在单个表达式中启用多个命名捕获组。

详细信息

  • (?<from>d+)-群";从":一个或多个数字
  • s*-s*-用零个或多个空格括起来的连字符
  • CCD_ 8-组";至":一个或多个数字
  • s*-零个或多个空白
  • digit(possible space?)-(possible space?)digit0-固定字符串
  • |-或
  • Alla dagars*(?<from>d+)s*-s*(?<to>d+)-固定字符串,零个或多个空白,组";从":一个或多个数字,一个用零个或更多个空格括起来的连字符,组";至":一个或多个数字

相关内容

最新更新