多行PCRE,多种条件

Multiline PCRE, multiple conditions

刚开始使用正则表达式并遇到了绊脚石。希望有人能够解释解决方法。

正在尝试执行多行搜索。我希望使用“*”作为 'flag',可以这么说:如果一行包含星号,它应该匹配。应输出行首的数字,链接示例中的单词 "Match" 也应输出,不包括星号本身。

我假设我使用“|”正在将正则表达式分为两个条件,当它实际上需要满足两个条件时才能匹配。

https://regex101.com/r/Pu56bi/2

(?m)(^\d+)|(?<=\*).*$

感谢任何帮助。

你可以使用 pos。向前看

^(?=.*?\*)(\d+).+?(Match)$

your modified example on regex101.com

如果 Match 总是在字符串的末尾,您可以匹配字符串开头的数字,然后匹配字符串末尾的 *Match字符串。

使用单词边界 \b 以防止数字单词成为较长单词的一部分。

^(\d+)\b.*\*.*\b(Match)$

Regex demo

如果在单词 Match 之后可以进行测试,您可以使用正向先行断言 *

^(?=.*\*)(\d+)\b.*\b(Match)\b.*$

Regex demo