应包含任何顺序的短语和匹配组的正则表达式
Regex which should contain phrase and a matching group in any order
我正在尝试检查字符串中的短语“Alla dagar”,无论是主持还是后跟 digit(possible space?)-(possible space?)digit
,它之间可能包含也可能不包含换行符。
示例:
### 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
我想出了两个正则表达式,但我都没有开始工作。第一个是 this one:
^(?=.*s|Alla dagar)(?=(?<from>\d+) ?- ?(?<to>\d+)).*$
The other regex I wrote 也不起作用,因为它不是唯一的。如果“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 dagar\s*(?<from>\d+)\s*-\s*(?<to>\d+)
见regex demo。确保使用 PCRE_INFO_JCHANGED
标志(正则表达式开头的 (?J)
可用于将其合并到正则表达式本身)以在单个表达式中启用多个命名捕获组。
详情:
(?<from>\d+)
- “来自”组:一个或多个数字
\s*-\s*
- 用零个或多个空格括起来的连字符
(?<to>\d+)
- 将“to”分组:一位或多位数字
\s*
- 零个或多个空格
Alla dagar
- 固定字符串
|
- 或
Alla dagar\s*(?<from>\d+)\s*-\s*(?<to>\d+)
- 固定字符串,零个或多个空格,“from”组:一个或多个数字,用零个或多个空格括起来的连字符,“to”组:一个或多个数字。
我正在尝试检查字符串中的短语“Alla dagar”,无论是主持还是后跟 digit(possible space?)-(possible space?)digit
,它之间可能包含也可能不包含换行符。
示例:
### 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
我想出了两个正则表达式,但我都没有开始工作。第一个是 this one:
^(?=.*s|Alla dagar)(?=(?<from>\d+) ?- ?(?<to>\d+)).*$
The other regex I wrote 也不起作用,因为它不是唯一的。如果“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 dagar\s*(?<from>\d+)\s*-\s*(?<to>\d+)
见regex demo。确保使用 PCRE_INFO_JCHANGED
标志(正则表达式开头的 (?J)
可用于将其合并到正则表达式本身)以在单个表达式中启用多个命名捕获组。
详情:
(?<from>\d+)
- “来自”组:一个或多个数字\s*-\s*
- 用零个或多个空格括起来的连字符(?<to>\d+)
- 将“to”分组:一位或多位数字\s*
- 零个或多个空格Alla dagar
- 固定字符串|
- 或Alla dagar\s*(?<from>\d+)\s*-\s*(?<to>\d+)
- 固定字符串,零个或多个空格,“from”组:一个或多个数字,用零个或多个空格括起来的连字符,“to”组:一个或多个数字。