You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用正则表达式查找包含西里尔字符的特定模板字符串

正则匹配西里尔字符片段修正方案

你的原正则存在3个核心问题:

  1. 你写的{Cyrillic}是占位符,不是正则支持的西里尔字符匹配语法
  2. 没有开启Unicode匹配模式,PHP的preg函数默认无法识别多字节的西里尔字符
  3. 没有适配if、变量、判断符之间的可变空格,容易因为空格数量不匹配失败

修正后的代码

如果只需要判断是否存在匹配,用preg_match:

preg_match("/{%\s*if\s+[\p{Cyrillic}_]+\s*!=\s*''\s*%}/iu", $features, $match);

如果需要提取所有符合规则的片段,改用preg_match_all:

preg_match_all("/{%\s*if\s+[\p{Cyrillic}_]+\s*!=\s*''\s*%}/iu", $features, $matches);

规则说明

  • \p{Cyrillic}是PCRE正则内置的Unicode属性,匹配所有西里尔字符
  • [\p{Cyrillic}_]+ 匹配由西里尔字符、下划线组成的变量名,如果你变量里还包含数字,可以改成[\p{Cyrillic}0-9_]+
  • \s*匹配0个或多个空白字符,适配标签内可能存在的多余空格、换行
  • 末尾的u修饰符强制开启Unicode模式,是识别西里尔字符的必要配置;i修饰符保留你原来的忽略大小写需求

内容的提问来源于stack exchange,提问作者Toma Tomov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:48:01