【问题标题】:Regular Expression Find & Replace inserting \1 instead of string正则表达式查找和替换插入 \1 而不是字符串
【发布时间】:2014-08-03 00:43:55
【问题描述】:

大家好。

我在 Adob​​e Dreamweaver CS6 的查找和替换字符串中使用正则表达式。

这是我的查找字段:

( )(4|5|6|7|8|9)(,|</p>)

这是我的替换字段:

\1<a href="aup-larondelle-0001.html#p\2">\2</a>\3

我的理解是,我输入的内容应该是指示 Find & Replace 函数查找任何数字 4-9,前面有一个空格,后面有一个逗号或关闭段落标记。然后它应该替换为字符串 1,这是空格,然后是 <a href="aup-larondelle-0001.html#p,然后是字符串 2,这将是找到的任何特定数字,然后是 ">,然后是字符串 2(这将是可见的、可点击的链接的一部分),后跟一个锚关闭标记,然后是字符串 3,它可以是一个 或一个关闭段落标记。

我实际上得到的是这个输出:

\1<a href="aup-larondelle-0001.html#p\2">\2</a>\3

这是替换我正在为电子书构建的索引中的“5”。所以 find 部分工作得很好,但由于某种原因,我在替换时得到了不稳定的结果。

有什么想法让我搞砸了?非常感谢您的宝贵时间!

编辑:添加了代码标记,以便显示我的代码。很抱歉!

编辑 2:为了清楚起见,我的意思是我从字面上得到 \1 而不是 find 函数中字符串 1 的实际值。

编辑 3:只是为了表明我已经进行了一些研究,我正在从 Liz Castro 非常有用的博客“Pigs, Gourds, and Wikis”中为我的查找和替换绘制基本格式。她在 2010 年 7 月 20 日的条目推荐了这种格式,可以在 this link 找到。我也曾在那里请求帮助,但卡斯特罗女士是一位女性,而 Stack Overflow 则是众多女性。 :)

回答:我找到了我的问题的答案。事实证明,在 Adob​​e Dreamweaver 中,它们不使用 \ 来表示字符串。他们使用 $ 代替。因此,将 $ 替换为每次出现的 \ 都会产生可用的输出。嘘! (由于是新手,显然无法回答我自己的问题 8 小时)

【问题讨论】:

  • 尝试将替换字符串中的\1 更改为$1

标签: html regex string replace dreamweaver


【解决方案1】:

除了反向引用问题之外,您的正则表达式还可以进行一些改进。在 Dreamweaver 6 中测试:

搜索:([4-9])(,|</p>)

替换:<a href="aup-larondelle-0001.html#p$1">$1</a>$2

  1. 如您所述,Dreamweaver 中的反向引用应采用 $1 而不是 \1 的形式
  2. 无需占用空间。可以直接用空格代替。
  3. 4|5|6|7|8|9 表达式可以通过字符范围 [4-9] 更简洁地表示(字符范围是正则表达式的主要功能之一)。

【讨论】:

  • 谢谢。我很幸福地不知道! :)
猜你喜欢
  • 2021-05-18
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多