Chr*_*her 33 php regex preg-replace
我试图采取一串文字,如下所示:
$string = "This (1) is (2) my (3) example (4) text";
Run Code Online (Sandbox Code Playgroud)
在括号内有正整数的每个实例中,我想用简单的整数本身替换它.
我现在使用的代码是:
$result = preg_replace("\((\d+)\)", "$0", $string);
Run Code Online (Sandbox Code Playgroud)
但我一直在接受
分隔符不得为字母数字或反斜杠.
警告
有什么想法吗?我知道这里有其他问题可以解答这个问题,但我对正则表达式的了解并不足以将其转换为这个例子.
cod*_*ict 44
你快到了.您正在使用:
$result = preg_replace("((\d+))", "$0", $string);
Run Code Online (Sandbox Code Playgroud)
preg_*函数族的第一个参数的正则表达式应该在分隔符对中分隔.由于您没有使用任何分隔符,因此会出现该错误.(并且)是正则表达式中的元字符,意味着它们具有特殊含义.由于您希望匹配文字左括号和右括号,因此需要使用a来转义它们\.以下任何内容\都按字面意思处理.\d+.但捕获的整数将在$1和不在$0.$0
将具有整个匹配,即括号内的整数.如果您执行以上所有更改,您将获得:
$result = preg_replace("#\((\d+)\)#", "$1", $string);
Run Code Online (Sandbox Code Playgroud)
1)你需要有一个分隔符,/工作正常.
2)你必须逃避(和)字符,所以它不认为它是另一个分组.
3)此外,替换变量从1开始,而不是0(0包含FULL文本匹配,其中包括括号).
$result = preg_replace("/\((\d+)\)/", "\\1", $string);
Run Code Online (Sandbox Code Playgroud)
这样的事情应该有效.任何进一步的问题,请转到PHP的preg_replace()文档 - 它确实很好.
| 归档时间: |
|
| 查看次数: |
42671 次 |
| 最近记录: |