我有PHP应用程序,我想在另一个单词后面加上字符串"单词"。它可以跟着另一个字符串。
- 您好,这是状态:确定
- 您好,这是状态:确定。
- 你好,这是状态:好的,我喜欢它。
我想始终获得"正常">状态。请问该怎么做?
我有:
preg_match('~status:s(.*)(?=s.*)?~', $text, $matches);
但是 is 返回状态后的所有内容:。
您可能会问为什么您当前的解决方案不起作用?
如果您看到它在匹配后匹配空格字符status:
则匹配到行尾.*
然后回溯以查找存在空格的匹配项。如果ok
后面的空格不立即存在或在字符串后面的某个地方不存在,则找不到匹配项。溶液:
status:s+Kw+
您不需要捕获组,也不应该量化前瞻。
在此处观看现场演示
PHP代码:
preg_match('~status:s+Kw+~', $text, $matches);
你可以用(w*)
替换(.*)
:
preg_match('~status:s(w*)~', $text, $matches);
演示
修复当前方法的另一种方法是使(.*)
中的点变得懒惰,然后对当前展望进行轻微更改:
preg_match('~status:s(.*?)(?=s|$)~', $text, $matches);
你可以使用积极的回头看来做到这一点,并在它后面取下每个单词字符。
(?<=status:s)(\w+)
演示