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

时间:2015-04-13 22:28:21

标签: php regex pattern-matching preg-replace

我正在尝试创建一个PHP正则表达式preg_replace,以便删除特定字符串后的所有内容。让我说我有一篇文章,并且在每篇文章的最后都有一个特定的单词模式,文章总是结束。如下。

输入字符串:

  

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

期望的输出:

  

Lorem ipsum dolor坐下来,精神上的精神。 Cras vestibulum pellentesque egestas。 Sed quis velit eros。 Phasellus vitae,euismod lectus nec,auctor libero。在venenatis sapien id nunc varius vehicula ./Site.com/

因此我想删除模式和输入字符串中的模式之后的所有内容,以粗体显示。 “Risusm®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);

谢谢!

1 个答案:

答案 0 :(得分:1)

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

\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