首页 > 解决方案 > 如何抓取以双百分号开头和结尾的单词?

问题描述

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

如何获取以 . 开头和结尾的所有字符串%%

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

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

标签: phpregex

解决方案


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

^%%.*%%$

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

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

如果您想在一个字符串中查找多个匹配项,您可以使用%%\w+%%. 这也将匹配%%HELLO_WOLD%%.%%%%%HELLO_WOLD%%%

如果开头和结尾应该只有 2 个百分号,您可以使用正向前瞻(?=和正向后(?<=视来断言 2 个百分号之前和之后的不是百分号,或者是开头或^结尾$细绳。

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


推荐阅读