我对正则表达式非常不满 - 从来没有足够的时间正确地学习它。正则表达式:查找包含特定选择器的元素
我试图找到它们包裹着%% %%字符串中的所有元素 - 例如将是:
%%画廊%%
任何想法,正则表达式会在这里完成这项工作吗?
我打算稍后在PHP中使用它来用相关插件替换占位符。
我对正则表达式非常不满 - 从来没有足够的时间正确地学习它。正则表达式:查找包含特定选择器的元素
我试图找到它们包裹着%% %%字符串中的所有元素 - 例如将是:
%%画廊%%
任何想法,正则表达式会在这里完成这项工作吗?
我打算稍后在PHP中使用它来用相关插件替换占位符。
(?<!%)%%([^%]+)%%(?!%)
这正是%%什么%%匹配。这是非贪婪的匹配也正确的内容,如'Lorem ipsum %% sample %% lorem %%% ipsum %%%等等。例如,
完美无缺 - 非常感谢大家! – user398341 2011-03-16 14:47:51
就像/%%[a-z]+%%/i
会工作。
[a-z]+
部分表明a-z之间应该有多个字符(+),并用%围成一圈。/i使其不区分大小写。
一个正则表达式是:
%%(.*?)%%
如:
$string = preg_replace('/%%(.*?)%%/', '{replacement for $1}', $string);
.*
匹配“万能”,?
使它成为一个非贪婪的比赛,这意味着它试图找到尽可能短的尽可能匹配。如果你有一个像"%%a%% %%b%%"
这样的字符串,你不希望它找到最长的可能匹配,这将是a%% %%b
。
%%a%% %%b%% # Greedy
^^^^^^^
%%a%% %%b%% # Non-greedy
^ ^
替换字符串的$1
是任何匹配的标签。在你的例子中,这将是字gallery
。
preg_replace("/%%\w+%%/", "replacement", "string");
'/ %%(.+?)%%/ s'会匹配那个。如果您需要更合适/更准确的答案,您必须提供有关该问题的更多信息。 – dialer 2011-03-16 14:31:23