虽然正则表达似乎是一个经常出现的麻烦,但我没有找到解决问题的方法。
我有一个多行(> 75 000)的文件,其中我想要替换它们中的很多,都在两个可识别的模式(starting_point和ending_point)之间。 我的正则表达式尝试:
$filtered = preg_replace('%(#\sstarting_point).+(#\sending_point)%isU',$replacement,$2befiltered);
。现在是什么角色,包括\ n。我使用%..%作为分隔符,因为我的行几乎有任何东西,但没有%(任何东西包括/,$, - ,“,空格,+,{,}),我遇到了”编译失败:没有重复偏移......“。
但我似乎无法使其发挥作用。我想也许php.ini中的pcre是问题所在,但似乎并非如此。我试图使用?U,但没有成功。与。*相同正如我在某些地方读过的那样。也许我只是写错了,但是......
无论如何,是否有人愿意为此嗤之以鼻?
文本示例(带...表示许多其他行):
whatever
lines
you
can
...
# starting_point
lines/*-
to$_,"
delete+{}=@
...
# ending_point
some
other
lines
...
答案 0 :(得分:0)
这似乎有效:%(#\sstarting_point)(.*?)(#\sending_point)%isU
$ matches [2] [0]包含#starting_point和#ending_point
之间的行答案 1 :(得分:0)
$filtered = preg_replace('/(#\sstarting_point)(.*?)(#\sending_point)/sm', $replacement,$2befiltered);
试试这个。