我在字符串中有很多(页#)像(第13页)(第234页),我想删除它们。我用以下模式匹配,但它不起作用匹配以下模式
preg_replace('/\(p\.*\)/','',$string);
(to escape (
p is p
\. to escape .
我需要一些帮助在这里。谢谢。
我在字符串中有很多(页#)像(第13页)(第234页),我想删除它们。我用以下模式匹配,但它不起作用匹配以下模式
preg_replace('/\(p\.*\)/','',$string);
(to escape (
p is p
\. to escape .
我需要一些帮助在这里。谢谢。
您的正则表达式中没有任何符合页码的内容。你只是匹配像(p.......)
。
preg_replace('/\(p\.\s*\d+\s*\)/', '', $string);
*表示匹配0个或多个前面的项目,所以它会在工作。在你的例子中的字符。也许你会需要这样的东西:
preg_replace('/\(p\. ?[0-9]+\)/','',$string);
此相匹配:?
希望这有助于
首先,在所有preg_replace
是一个函数,而不是一个程序,如果你想看到的任何变化,你需要写:
$str = preg_replace($pattern, $replacement, $str);
在你的模式,你写\.*
这意味着文字。零次或多次,我认为这不是你想要的。我假设你想写一个文字\..*
。和零个或多个字符。但这不起作用,原因有两个:它不检查字符是否是数字,并且因为量词是贪婪的,所以.*
将匹配所有字符,直到行尾并且将回溯到最后一个括号。
的好办法可能是,检查至少有一个数字(使用+
量词)或相同的多个constraignant(不含空格可变数量)Barmar模式:
/\(p\. \d+\)/
谢谢你这么多小提琴!我发现HTML中的空格是 ,所以我将模式更改为\(p \。 + \ d + \)。一切都设定好了。 –