第一个正则表达式实例匹配在第一行不匹配?

Posted

技术标签:

【中文标题】第一个正则表达式实例匹配在第一行不匹配?【英文标题】:First regex instance match not matching on first line? 【发布时间】:2014-06-30 11:27:48 【问题描述】:

根据以下示例,我有一个正则表达式模式。

http://regex101.com/r/sB3kK5

基本上它只匹配特定正则表达式模式的第一个实例。

但是,作为一次性派生,如果只有一个模式(匹配第一个实例与空行和模式上方的空格),我可以获得以下匹配。

http://regex101.com/r/eY0iC7

但是,如果模式在第一行,则不匹配。

http://regex101.com/r/qH7iT4

如何让最后一个示例匹配第一行?

【问题讨论】:

【参考方案1】:
^(.+?)?\byo\b(?:(?!cut me:|yo).)*cut me:

我刚刚在(.+?) 之后添加了一个? 以使其可选。

demo

【讨论】:

【参考方案2】:

如何让最后一个示例匹配第一行?

正则表达式:^(.+?)\byo\b(?:(?!cut me:|yo).)*cut me:by 之前需要一个或多个字符,因为(.+?) 中的+。考虑将其更改为(.*?)

【讨论】:

以上是关于第一个正则表达式实例匹配在第一行不匹配?的主要内容,如果未能解决你的问题,请参考以下文章

用于匹配大括号中的每一行的正则表达式

正则表达式 - 在第 n 个空格之间匹配数据并在第 n 个空格处停止

正则表达式 - 在第一个和第三个字符之间插入一个特殊字符 (~),并且仅当存在完全匹配时

如何使用模式匹配器仅获取与 Java 中正则表达式匹配的第一行?

JS的正则表达式

如何获取与正则表达式匹配的第一行之后的文件部分