正则表达式删除特定模式后的所有内容

Regex to remove everything after a specific pattern

我正在尝试制作一个 PHP 正则表达式 preg_replace 以便删除特定 string.Lets 之后的所有内容说我有一篇文章,并且在每篇文章的末尾都有文章总是结束的特定单词模式。如下

输入字符串:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vestibulum pellentesque egestas. Sed quis velit eros. Phasellus vitae, euismod lectus nec, auctor libero. In venenatis sapien id nunc varius vehicula./Site.com/ Risus mt 12/04/2015, ora 20:56 Tags: sapien lectus kalon fames laoreet

期望的输出:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vestibulum pellentesque egestas. Sed quis velit eros. Phasellus vitae, euismod lectus nec, auctor libero. In venenatis sapien id nunc varius vehicula./Site.com/

因此,我想删除输入字符串中粗体的模式和模式之后的所有内容。 "Risus më 12/04/2015, ora 20:56" 因为它总是相同的并且遵循日期和时间,数字格式。

我正在尝试执行类似于下面代码的操作,但我无法在不出错的情况下构建正则表达式,因为我不确定所需模式的正确语法。

$desired_string = preg_replace('\^Risus m.\s\d\d\D\d\d\D\d\d\d\d\D\s(ora)','',$string);

谢谢!!

如果你想使用正则表达式删除文本中标记之后的内容,直到最后,你需要使用.*?。所以,你可以使用这样的东西:

\s*Risus\s+m.\s+\d{2}\D\d{2}\D\d+,\s+ora.*$

PHP代码:

$re = "/\s*Risus\s+m.\s+\d{2}\D\d{2}\D\d+,\s+ora.*$/"; 
$str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vestibulum pellentesque egestas. Sed quis velit eros. Phasellus vitae, euismod lectus nec, auctor libero. In venenatis sapien id nunc varius vehicula./Site.com/ Risus mt 12/04/2015, ora 20:56 Tags: sapien lectus kalon fames laoreet"; 
$result = preg_replace($re, "", $str);

demo