我在字符串中有很多(p。#)喜欢(第13页)(第234页),我想删除它们。我使用以下模式进行匹配但不起作用
preg_replace('/\(p\.*\)/','',$string);
( to escape (
p is p
\. to escape .
我需要一些帮助。谢谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
您的正则表达式中没有任何内容可以匹配页码。您只需匹配(p.......)
等内容。
preg_replace('/\(p\.\s*\d+\s*\)/', '', $string);
答案 2 :(得分:0)
*表示匹配前面项目中的0个或多个,因此它将处理。你的例子中的角色。也许你可能需要这样的东西:
preg_replace('/\(p\. ?[0-9]+\)/','',$string);
匹配:
希望这有帮助
答案 3 :(得分:0)
首先,preg_replace
是一个函数,而不是一个过程,如果你想看到任何变化,你需要写:
$str = preg_replace($pattern, $replacement, $str);
在你的模式中你写了\.*
,意思是一个文字。零次或多次,我认为这不是你想要的。我假设你想写\..*
一个文字。和零个或多个字符。但由于两个原因,这也不起作用:这不会检查字符是否为数字,并且由于*
量词是贪婪的,.*
将匹配所有字符,直到该行的结尾将回溯到最后一个括号。
好方法可能是Barmar模式检查至少有一个数字(使用+
量词)或相同的更多约束(没有可变数量的空格):
/\(p\. \d+\)/