我想用每个匹配组内的单词替换字符串的不同部分。所以,如果我有这个字符串:
<td>{$phrase->getId()}</td>
<td>{$phrase['name']}</td>
<td>{$phrase['id']}</td>
我希望能够得到字符串:
<td>id</td>
<td>name</td>
<td>id</td>
我尝试了这个表达式:
\{\$\w+(?:\['(\w+)'\]|->get(\w+)\(\))\}
但是当我input.replace(regex, "$1")
时,我得到了:
<td></td>
<td>name</td>
<td>id</td>
答案 0 :(得分:3)
替换为$1$2
,因为您已使用|
或运算符
像这样:input.replace(regex, "$1$2");
对于第一个句子,Id
进入第二个捕获组,因此它与第一个不匹配。