只获得正则表达式的第二行

时间:2017-03-17 15:10:08

标签: php regex

我有这个正则表达式:!^>{1} (.*)$!m但我只想匹配第二行:

>> text1
> text2
> text3

但由于m,第3行也匹配在这里。当我删除标记m时,它只会查看字符串的开头,而不是行的开头。 $似乎什么都不做。

请参阅:https://regex101.com/r/AKYO1f/1

3 个答案:

答案 0 :(得分:1)

正如@Shafizadeh所说,只需删除g标志即可。这将使它在第一场比赛后返回,而不是找到所有比赛。

只是对原因的解释:当您有多行标记^&匹配LINE的开头和结尾时,但当您删除多行标记^和{{ 1}}匹配STRING的开头和结尾。

答案 1 :(得分:0)

希望这会奏效。

正则表达式:>{1,2}[\w\s]+\n\K\>[\s\w\d]+

Regex Demo

答案 2 :(得分:0)

我认为你可以使用preg_match()

  

preg_match()返回模式匹配的次数。这将是0次(不匹配)或1次,因为preg_match()将在第一次匹配后停止搜索。相反,preg_match_all()将一直持续到主题结束。如果发生错误,preg_match()将返回FALSE。

preg_match()的第三个参数,如果给出,将用数组内的匹配填充

来自RegEx in PHP: find the first matching string

的答案