这个怎么做
$var[somevalue];
到
$var['somevalue'];
使用记事本++(替换)我找到了\[somevalue\]:
\[somevalue\]
^\[^\\\]\\\[\\n\]\*(?:\\r?\\n\[^\\\]\\\[\\n\]\*)?\\\]|\\\[\[^\\\]\\\[\\n\]\*(?:\\r?\\n\[^\\\]\\\[\\n\]\*)?\\\]?
但不知道如何将单引号添加到值中。谢谢尝试通过谷歌和测试找到解决方案,但没有得到正确的解决方案
oipij1gg1#
查找:
\[([^\]]+)
替换::
['\1'
\[
[
([^\]]+)
]
\1
bfhwhh0e2#
可以替换正则表达式的(零宽度)匹配项
(?<=\[)|(?=\])
用一个引号。DemoNotepad++的正则表达式引擎支持 * 正查找头 (这里是(?=\]))和(固定长度) 正查找后面 *(这里是(?<=\[))。将(?<=\[)视为'['之后和'['后面的字母之前的位置,将(?=\])的匹配项视为']'之前和']'前面的字母之后的位置。上面的代码将用"a['bc'"替换"a[bc",用"ab']c'"替换"ab]c",这可能是不希望的。若要仅在同时存在左括号和右括号时进行替换,请使用正则表达式
(?=\])
(?<=\[)
'['
']'
"a['bc'"
"a[bc"
"ab']c'"
"ab]c"
\[(.*?)\]
并将匹配替换为
'\1'
Demo.*?中的问号会导致.*匹配尽可能少的字符,因此不会匹配']'。相比之下,.*匹配尽可能多的字符。因此,如果字符串是'a[b]c[d]e',.*?将匹配'[b]',然后'[d]',而.*?将匹配'[b]c[d]'。如果需要的话,.*?在大多数情况下可以被[^\]]*替换。唯一的区别是后者匹配行终止符,而前者不匹配。甚至可以使用[^\[\]]*来防止格式错误的字符串"ab[c[d]e"被"ab['c[d']e"替换。
.*?
.*
'a[b]c[d]e'
'[b]'
'[d]'
'[b]c[d]'
[^\]]*
[^\[\]]*
"ab[c[d]e"
"ab['c[d']e"
2条答案
按热度按时间oipij1gg1#
查找:
替换::
正则表达式匹配如下:
\[
[
([^\]]+)
]
以外的任何字符一次或多次,并将结果存储在\1
中bfhwhh0e2#
可以替换正则表达式的(零宽度)匹配项
用一个引号。
Demo
Notepad++的正则表达式引擎支持 * 正查找头 (这里是
(?=\])
)和(固定长度) 正查找后面 *(这里是(?<=\[)
)。将(?<=\[)
视为'['
之后和'['
后面的字母之前的位置,将(?=\])
的匹配项视为']'
之前和']'
前面的字母之后的位置。上面的代码将用
"a['bc'"
替换"a[bc"
,用"ab']c'"
替换"ab]c"
,这可能是不希望的。若要仅在同时存在左括号和右括号时进行替换,请使用正则表达式
并将匹配替换为
Demo
.*?
中的问号会导致.*
匹配尽可能少的字符,因此不会匹配']'
。相比之下,.*
匹配尽可能多的字符。因此,如果字符串是'a[b]c[d]e'
,.*?
将匹配'[b]'
,然后'[d]'
,而.*?
将匹配'[b]c[d]'
。如果需要的话,
.*?
在大多数情况下可以被[^\]]*
替换。唯一的区别是后者匹配行终止符,而前者不匹配。甚至可以使用[^\[\]]*
来防止格式错误的字符串"ab[c[d]e"
被"ab['c[d']e"
替换。