替换任何正则表达式php

替换任何正则表达式php,php,regex,str-replace,Php,Regex,Str Replace,我用php编写了这个正则表达式 $array_item_aux = str_replace('/.*PUBMED=/',"",$array_item); 它应该取代这个文本 (-ENSR000012129 |监管特征|监管区域|变体|-|-|-|-|-|-| PUBMED=21499247) 用这个 21499247 我做错了什么您应该通过添加一个?来创建*;但您的主要问题是str_replace()不允许使用正则表达式进行搜索,而是使用: str\u replace不使用正则表达式,请使用

我用php编写了这个正则表达式

$array_item_aux = str_replace('/.*PUBMED=/',"",$array_item);
它应该取代这个文本 (-ENSR000012129 |监管特征|监管区域|变体|-|-|-|-|-|-| PUBMED=21499247)

用这个

21499247

我做错了什么

您应该通过添加一个
来创建
*
;但您的主要问题是
str_replace()
不允许使用正则表达式进行搜索,而是使用:


str\u replace
不使用正则表达式,请使用
preg\u replace

$array_item_aux = preg_replace('/.*?PUBMED=/', "", $array_item);

或者,如果显示的字符串是整个字符串,则可以使用“分解”:

$array_item_aux = explode('PUBMED=', $array_item)[1];

如果您的PHP版本太旧(无论如何,惰性匹配是不必要的(
*?
而不是
*
)-不完全确定人们为什么会提出这一建议……尽管这肯定没有什么坏处。最终,下面提到的功能更改是这里的主要问题。对于应用它的文本中多次出现几个PUBMED=的情况,延迟匹配是有意义的,因为。*确实匹配。但这取决于输入。这是answer可能应该包括一个关于PHP版本可用性的注释/警告…(当然是一个很好的替代方法!)只是给对这个答案感兴趣的人一个注释:“太旧了”<5.4.0旧PHP的另一个替代方法是
list(,$array\u item\u aux)=explode('PUBMED=,$array\u item);
@Sam很好的语法,我会添加它
$array_item_aux = explode('PUBMED=', $array_item)[1];
$tmp = explode('PUBMED=', $array_item);
$array_item_aux = $tmp[1];
list(, $array_item_aux) = explode('PUBMED=', $array_item);