preg_replace 正则表达式在行尾停止

preg_replace regex stop at end of line

无法使用 preg_replace 选择和删除文本。我有一个起点 Address: 没有终点,只是它以换行结尾。是否有一个正则表达式可以删除文本行,使用换行符作为结束点?

地址:123 Main Street
城市:纽约

preg_replace('#Address:.*#si'), '', $lead_container)

上面删除了所有内容,包括我希望保留的城市:纽约。我可以使用 City: 作为我的终点,但它并不总是可用。首选换行符 \n 作为端点。

preg_replace('#Address:.*\n#si'), '', $lead_container)

尝试将 \n\r 添加到我的正则表达式中。那仍然选择一切。如果可能的话,我肯定会很感激被指出正确的方向。谢谢

你有几个选择。首先,您可以删除正则表达式中的 s 选项;这将阻止 . 匹配换行符:

echo preg_replace('#Address:.*#i', '', $lead_container);

其次,您可以通过在 .*:

之后添加 ? 使第二个示例中的正则表达式非贪婪
echo preg_replace('#Address:.*?\n#si', '', $lead_container);

两种情况下

的示例输入
$lead_container = "Address: 123 Main Street
City: New York";

输出为City: New YorkDemo on 3v4l.org

这在第一个 空白

之后开始 select
preg_replace('[ ].*?\n', '', $lead_container)