php – 如何获得正则表达式的第一个单词

我是正则表达式的新手,我想弄清楚这个:

This is some text 1
This is some text 2
This is some awesome text
Test!
Test!
This is some text 3
This is some text 4
This is some awesome text

这里有一些文字,我试图从“这是一些文字1”一直到第一个“测试”!但我一直把它带到第二个“测试!”.我怎样才能使它只捕获第一个“测试!” ?

这是我做的:

(.*)(Test!)

基本上得到一切,然后停止测试! (先想到我在第一个停了)
然后我尝试了:

(.*)(Test!)[\f\r\t\n]

仍然得到了第二个我只包括其他一切
然后我尝试了:

(.*)(Test!){1}

以为我会得到第一个,只有那一个.

最佳答案 正则表达式是贪婪的,这意味着它尽可能地匹配.使用 ?使非贪婪:

(.+?)Test!
   ^ make it non-greedy

Stub.不要忘记制作的选项.匹配换行符.

点赞