我想搜索包含数字“1”的特定模式,并将其替换为相同的字符串,后跟数字“2”。但是,如果我调用$12
,那么输出就是文字“$ 12”。正则表达式引擎似乎试图找到内存插槽12,但我打算寻址内存插槽1,然后写入“2”。
我尝试创建fiddle,但这不会重现错误,因此显然它与我的编辑器有关。我正在使用Dreamweaver CS6。如果没有使用Dreamweaver,那么可能是我的Dreamweaver设置。
另外,我刚发现this question引用了我完全相同的问题 - 但提供的答案对我不起作用。 $012
只写“$ 012”。我猜Dreamweaver RegExp引擎就像那样奇特。
有什么想法吗?
编辑:
给出示例文本......
This is item 1
This is house 3
...和模式((?:item|house) )\d
我尝试了什么我得到了什么
$12 | $12
$012 | $012
\g{1}2 | \g{1}2
$g{1}2 | $g{1}2
$12 | item2 // or "house"
${1}2 | ${1}2
"$1"+2 | "item"+2
期望的结果总是:
This is item 2
This is house 2
因为有人问:是的,我确定 RegExp复选框已激活,是的,我确定我在代码视图中,而不是设计视图。我总是在代码视图中工作。
我的Dreamweaver是CS6版本12.0 Build 5861。
答案 0 :(得分:1)
这是Dreamweaver中一个众所周知的错误。幸运的是,有一些解决方法。
为了论证,我们假设您正在寻找字母,并希望附加2
。
方法1
我在Dreamweaver CS6中测试了以下内容。
输入: abc
在代码视图中搜索: ([a-z]+)
替换: $12
代码视图中的输出: abc2
设计视图中的输出: abc2
请注意,代码视图中的输出为abc2
,但由于2
编码为2,因此您会在网页上看到abc2
方法2:两步法
相同搜索。
替换: $1SOMETHINGDISTINCTIVE
然后搜索SOMETHINGDISTINCTIVE
并替换为2
<强>最后强>
当然有些人认为真正的解决方法是在Komodo IDE(或他们喜欢的任何编辑器)中工作,但这不是你的问题。 :)
答案 1 :(得分:0)
假设测试字符串,即匹配或选择的字符串是
aabbbccbbbaacc2
情况1:使用向后引用进行匹配或选择
查找/搜索: (a +)(b +)(c +)\ 2 \ 1 \ 3 \ d
情况2:使用向后引用进行匹配或选择并替换
说我期望结果为 aacc9bbb
查找/搜索: (a +)(b +)(c +)\ 2 \ 1 \ 3 \ d
替换为: \ 1 \ 039 \ 2 要么 \ 1 $ 039 \ 2
因此,它不是\ 3而是\ 03或$ 03(在其后跟数字字符),位于“替换为”字段中。