正则表达式:查找用特定选择器包装的元素

时间:2011-03-16 14:26:47

标签: php regex

对于正则表达式我真的很糟糕 - 没有足够的时间来正确学习它。

我正在尝试查找字符串中包含%% %%的所有元素 - 例如:

  

%%画廊%%

知道正则表达式会在这里做什么工作吗?

我稍后会在PHP中使用它来用相关的插件替换占位符。

4 个答案:

答案 0 :(得分:3)

preg_replace("/%%\w+%%/", "replacement", "string");

答案 1 :(得分:2)

/%%[a-z]+%%/i这样的东西会起作用。

[a-z]+部分告诉a-z之间应该有多个字符(+),用%s包围。 / i使其不区分大小写。

答案 2 :(得分:2)

一个正则表达式是:

%%(.*?)%%

如:

$string = preg_replace('/%%(.*?)%%/', '{replacement for $1}', $string);

.*匹配“任何”,?使其成为非贪婪的匹配,这意味着它会尝试尽可能短地找到匹配项。如果你有一个像"%%a%% %%b%%"这样的字符串,你不希望它找到最长的匹配,这可能是a%% %%b

%%a%% %%b%%         # Greedy
  ^^^^^^^

%%a%% %%b%%         # Non-greedy
  ^     ^

替换字符串中的$1是匹配的标记。在您的示例中,单词gallery

答案 3 :(得分:1)

请注意:regex greedy problem (C#)

(?<!%)%%([^%]+)%%(?!%)

这与%% %%%完全匹配。这是非贪婪的匹配也正确的内容,如'Lorem ipsum %% sample %% lorem %%% ipsum %%%等等。