簡體   English   中英

PHP正則表達式不起作用 - 解析{{tags}}

[英]PHP regular expression not working - parsing {{tags}}

我想要做的是解析以下字符串,使{{}}內的所有占位符都被“default”指示的值替換。 例如, {{time, default=noon}}應該成為noon

這是我試過的代碼:

$input = 'It was a {{color, default=black}} and scary {{phase}}. As the {{animals, default=dogs}} {{make_sound, default=barked}} and the trees swayed {{setting, default=to the breeze}}, a {{size, default=}} {{monster, default=troll}} that emerged from the shadows.';
$input = preg_replace('/\{\{.*default=(\w+)\}\}/i', '$1', $input);
echo $input;

產生的輸出是: Output: It was a troll that emerged from the shadows.

為什么剩余的模式無法正確解析?

{{[^}]*\bdefault=([^}]*)}}

你可以試試這個。放置$1 。看看演示。

https://regex101.com/r/aG0sF5/4

因為.*很貪心。 還有一個非貪婪的正則表達式.*? 不會在這里工作,因為.*? 也將匹配}}

preg_replace('/\{\{(?:(?!\}\}).)*?default=(.*?)\}\}/i', '\1', $input);

DEMO

請看演示

=(.*?)}

正則表達式可視化

Debuggex演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM