如何抓取以双百分号开头和结尾的单词?

时间:2018-07-02 18:52:17

标签: php regex

我真的对正则表达式不好,我正在尝试执行以下操作:

如何获取所有以%%结尾的字符串。

如果这些单词出现在字符串中,我希望能够抓住它们:%%HELLO_WOLD%%%%STUFF%%

到目前为止,我的想法是:%%[a-zA-Z0-9]\w+

1 个答案:

答案 0 :(得分:1)

您可以使用锚点来声明行的开头^和结尾$,并与任何字符.*匹配零次或多次,或者如果您的字符必须至少有一个可能会使用.+

^%%.*%%$

或者代替.*,您可以添加将匹配大小写字符和数字的字符类[a-zA-Z0-9]+,或使用将匹配word character\w+。 / p>

请注意,字符类[a-zA-Z0-9]与下划线不匹配,而\w与下划线不匹配。

如果要在一个字符串中找到多个匹配项,则可以使用%%\w+%%。这也将与%%HELLO_WOLD%%中的%%%%%HELLO_WOLD%%%相匹配。

如果在开头和结尾处仅应有2个百分号,则可以使用正向前进(?=和正向后退(?<=断言这2个百分号之前和之后是什么不是百分号,也不是字符串的开头^或结尾$

(?<=^|[^%])%%\w+%%(?=[^%]|$)