正则表达式替换{{a,b}}和{{a}}

尼基尔·阿加瓦尔

我有很多弦。一些示例如下所示:

  1. 这是我的第一个示例字符串。{{1}}就是这样。
  2. 这是我的第二个示例字符串。{{1,2}}。这就是它的样子。
  3. 这是我的第三个示例字符串。{{1,3}}和{{2}}。这就是它的样子。

我的代码需要更换每个标记,看起来像{{1}}<input name="var1">

它还需要替换每个标记,看起来像{{1,2}}<input name="var1" value="2">

通常,每个看起来像的令牌都{{a}}需要替换为<input name="vara">,每个看起来像的令牌都需要替换{{a,b}}<input name="vara" value="b">

我正在使用php。

什么是做到这一点的最佳方法。每个字符串中有许多要替换的“令牌”。每个字符串可以具有两种样式的标记。

现在,我的代码如下所示:

for ($y = 1; $y < Config::get('constants.max_input_variables'); $y++) {
    $main_body = str_replace("{{" . $y . "}}", "<input size=\"5\" class=\"question-input\" type=\"text\" name=\"var" . $y . "\" value=\"".old('var'.$y)."\"  >", $main_body);
}

但这显然不是很有效,因为我循环搜索比赛。当然,我什至没有匹配看起来像这样的令牌{{1,2}}

杜沙尔

使用正则表达式 \{\{(\d+)(,(\d+))?\}\}

正则表达式说明和现场演示

  1. \{{从字面上匹配,需要转义,因为它是正则表达式中的特殊符号
  2. (\d+):匹配在组1中捕获的一个或多个数字
  3. (,(\d+))?:匹配一个或多个数字,然后可选地匹配逗号
  4. \}}从字面上匹配

$1$3分别用于替换以获取第一个和第三个捕获的组。

示例代码用法:

$re = "/\\{\\{(\\d+)(,(\\d+))?\\}\\}/mi";
$str = "This is my first example string. {{1}} This is what it looks like.\nThis is my second example string. {{1,2}}. This is what it looks like.\nThis is my third example string. {{1,3}} and {{2}}. This is what it looks like.";
$subst = "<input name=\"var$1\" value=\"$3\" />";

$result = preg_replace($re, $subst, $str);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

匹配A,B和AB的正则表达式

有正则表达式匹配“aa”和“b-b”,但不是“a-b”?

子串的php正则表达式以A开头,以B结尾,以便删除A和B

(b?)和(b)之间的区别?在正则表达式中?

正则表达式多行模式和替换替换

oracle正则表达式子串和正则表达式替换

正则表达式,用于匹配和替换“ <”和“>”

正则表达式Python,除非C,否则匹配A和B之间的任何内容

正则表达式:确保b不在a和c之间

正则表达式的模式以ABC开始,然后是B和/或C,然后以CBA结尾

正则表达式,用于查找 a、c 的偶数和 b、d 的偶数

Java正则表达式中\ w和\ b的Unicode等效项?

\ w和\ b正则表达式元字符之间的区别

正则表达式表示a的奇数个和b的奇数个

包含a和偶数b的字符串的正则表达式

正则表达式-PCRE(PHP)-单词边界(\ b)和重音字符

正则表达式,无连续2个a和b

正则表达式:re.sub(),\ b和西里尔字符

在计算理论中,为什么正则表达式 (ab)* 和 a*b* 不相等?

正则表达式:替换&amp; 和 , 。:--_

Visual Studio,查找和替换,正则表达式

用正则表达式删除和替换字符

Java正则表达式搜索和替换

使用正则表达式查找和替换notepad ++

Python正则表达式在原处查找和替换

Javascript正则表达式查找和替换问题

正则表达式搜索和替换数组键

VSCode搜索和替换正则表达式

Python中的正则表达式和替换