我正在寻找可以用“ - >”替换所有“[”的正则表达式但只有当它没有跟在“]”之后。
并同时更换所有“]”,但只有当它们不在“[”
旁边时所以换句话说“test [hi] []”将成为“test-> hi []”
谢谢;)
我真的不知道怎么做;)
答案 0 :(得分:4)
我假设括号之间存在PHP variable naming conventions(即字母,数字,下划线),并且您的代码有效(例如没有$test['five]
)。
echo preg_replace('/\[[\'"]?(\w+)[\'"]?\]/', '->\1', $input);
这应该处理:
test[one]
test['two']
test["three"]
但不是:
test[$four]
答案 1 :(得分:4)
不需要regexp!
strtr($str, array('[]'=>'[]','['=>'->',']'=>''))
$ cat 1.php
<?php
echo strtr('[hi][]', array('[]'=>'[]','['=>'->',']'=>''));
$ php 1.php
->hi[]
答案 2 :(得分:0)
这应该做。它使用
\[ # match a [
( # match group
[^\]]+ # match everything but a ] one or more times
) # close match group
\] # match ]
匹配括号内的任何内容
$replaced = preg_replace("/\[([^\]]+)\]/", "->$1", $string);
答案 3 :(得分:0)
将此正则表达式\[(\w+)\]
替换为->
+匹配组1