我是处理正则表达式的新手,并且想知道以下正则表达式是否可以以某种方式简化......
{{(?:[\s]+)?(.*)([\s]+)?}}
我试图从以下模式中获取字符串...
{{SOME_STRING}}
{{ SOME_STRING}}
{{ SOME_STRING }}
{{ SOME-STRING }}
{{ SomE STRING }}
此外,由于比赛中不应有任何尾随空格,因此它不能正常工作。
Regex101链接:http://regex101.com/r/kT9yT5
答案 0 :(得分:1)
比赛中不应有任何尾随空格
您可以尝试以下正则表达式并获取匹配的组
/{{\s*(.*?)\s*}}/g
这意味着{{
和}}
中包含的所有内容都使用 Reluctant quantifiers 进行分组。
答案 1 :(得分:1)
对于直接匹配,请使用\K
Magic
{{\s*\K[^}]+?(?=\s*}})
<强>解释强>
{{\s*
匹配开头大括号和任何空格字符\K
告诉引擎放弃与其返回的最终匹配项目匹配的内容[^}]+?
懒惰地匹配任何字符...... (?=\s*}})
可以断言后面的内容是空格和结束括号。示例代码
请参阅live php demo底部的输出。
$regex = '~{{\s*\K[^}]+?(?=\s*}})~';
preg_match_all($regex, $yourstring, $matches);
print_r($matches[0]);
<强>输出强>
[0] => SOME_STRING
[1] => SOME_STRING
[2] => SOME_STRING
[3] => SOME-STRING
[4] => SomE STRING
答案 2 :(得分:0)