And*_*ers -3 php regex preg-replace
考虑
preg_replace('/(lets go).*/', "going", "lets go somewhere")
Run Code Online (Sandbox Code Playgroud)
它将输出:"前进",我想"去某个地方".
preg_replace似乎用第一个匹配替换,这是整个字符串"让我去某个地方".如何使它忽略索引0并仅忽略目标索引1?
我不知道你想要匹配什么.*.你不需要它.这样可以正常工作:
preg_replace('/(lets go)/', "going", "lets go somewhere");
Run Code Online (Sandbox Code Playgroud)
或者你可以使用懒惰的比赛:
preg_replace('/(lets go).*?/', "going", "lets go somewhere");
Run Code Online (Sandbox Code Playgroud)
说明:您的原始表达式是贪婪的.这大致意味着.*匹配尽可能多的字符..*?懒惰; 它匹配最小字符数.
您还可以将"某处"匹配为子模式,并将其替换为替换:
preg_replace('/(lets go)(.*)/', "going\$2", "lets go somewhere");
Run Code Online (Sandbox Code Playgroud)
这里.0美元是"让我们去某个地方",1美元是"放手",2美元是"某处".需要反斜杠,因为"go\$ 2"在双引号内.
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |