正则表达式删除特定模式后的所有内容
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。
我正在尝试制作一个 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。