preg_replace问题

发布于 2024-08-09 14:42:34 字数 310 浏览 3 评论 0原文

我想从以下位置匹配和提取变量: {{variable:int}}

  • variable 可以是任何 az
  • : 是分隔符
  • int 将是一个整数 0-9

目前我有: preg_replace('!\{\{(\S+)\}\}!', "$1", $string) 这只完成了一半的工作,我仍然需要按 : 进行分割。

谢谢你!

I'd like to match and extract variables from: {{variable:int}}

  • variable would be anything a-z
  • : is a separator
  • int would be an integer 0-9

Curretly i have: preg_replace('!\{\{(\S+)\}\}!', "$1", $string)
which does only half the job, i still have to split by :.

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

可可 2024-08-16 14:42:34

您需要非贪婪匹配(.*?): preg_replace('!\{\{(.*?):(\d)\}\}!')

You need a non-greedy match (.*?): preg_replace('!\{\{(.*?):(\d)\}\}!')

你如我软肋 2024-08-16 14:42:34

如果你想提取名称/值,我想你想使用 preg_match。

preg_match('!\{\{(.*?):(\d)\}\}!', $string, $matches);  
$varname = $matches[1];  
$val = $matches[2];  

If you want to extract the name/value, I think you want to use preg_match.

preg_match('!\{\{(.*?):(\d)\}\}!', $string, $matches);  
$varname = $matches[1];  
$val = $matches[2];  
比忠 2024-08-16 14:42:34

使用

{{([a-zA-Z]+):(\d+)}}

$1将包含捕获的变量,$2将包含捕获的整数

解释

{{([a-zA-Z])+:(\d+)}}

[a-zA-Z]+表示至少还有一个字母(小写或大写)
后跟一个“:”
后跟至少一位或多位数字 (0-9)

Use

{{([a-zA-Z]+):(\d+)}}

$1 will contain the captured variable, $2 will contain the captured integer

Explanation

{{([a-zA-Z])+:(\d+)}}

[a-zA-Z]+ means atleast one more alphabets (small or caps)
followed by a ":"
followed by atleast one or more digits (0-9)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文