正常表达有问题(他们不是我的强项)。我正在尝试匹配{{和}}之间的所有字符串,但如果在同一行上出现一组括号,则将其计为单个匹配...示例:
$string = "
Hello, kind sir
{{SHOULD_MATCH1}} {{SHOULD_MATCH2}}
welcome to
{{SHOULD_MATCH3}}
";
preg_match_all("/{{(.*)}}/", $string, $matches);
var_dump($matches); // returns arrays with 2 results instead of 3
返回:
array(2) {
[0]=>
array(2) {
[0]=>
string(35) "{{SHOULD_MATCH1}} {{SHOULD_MATCH2}}"
[1]=>
string(17) "{{SHOULD_MATCH3}}"
}
[1]=>
array(2) {
[0]=>
string(31) "SHOULD_MATCH1}} {{SHOULD_MATCH2"
[1]=>
string(13) "SHOULD_MATCH3"
}
}
有任何帮助吗?谢谢!
答案 0 :(得分:4)
将*
量词替换为non-greedy表格*?
。
这将使得它尽可能少地匹配,同时仍允许表达式作为整体匹配,这与其当前匹配的行为尽可能不同。
答案 1 :(得分:1)
您可以使用以下模式之一。
{{(.+?)}
{{([^}]+)
{{(\w+)
{{([[:digit:][:upper:]_]+)
{{([\p{Lu}\p{N}_]+)