0

我想写一个正则表达式在 Dreamweaver 中做一些替换。<abbr>我需要html 中标签的正则表达式。

例如,在我的页面中将出现以下文本:

Photo: NASA 

我希望它变成:

Photo: <abbr title="National Aeronautics and Space Administration">NASA</abbr> 

请注意,我的 HTML 中“NASA”这个词的一些实例已经被<abbr>标签包围了。如果是这种情况,请不要<abbr>在其周围放置其他标签。

4

3 回答 3

1

搜索:NASA

用。。。来代替:

<abbr title="National Aeronautics and Space Administration">NASA</abbr>

然后搜索:

<abbr title="National Aeronautics and Space Administration"><abbr title="National Aeronautics and Space Administration">NASA</abbr></abbr>

用。。。来代替:

<abbr title="National Aeronautics and Space Administration">NASA</abbr>

多田!=)

于 2012-11-27T20:26:22.947 回答
0

我省略了后视。我不确定 Dreamweaver 支持哪种类型的正则表达式。

尝试使用以下正则表达式:

NASA(?!( *</abbr>)|(\.\w+)|("))

它不会匹配 NASA 的任何实例:

  • 其次是</abbr>不管 NASA 和</abbr>
  • 后跟 a.和其他字符,例如 nasa.gov 被视为无效。
  • 后跟一个/,例如 test.gov/nasa/ 被认为是无效的。
  • 后面跟着一个"它是无效的。
  • 当正则表达式出现在这样的引用中时,它将与 NASA 匹配:

    "This NASA is surrounded by quotes"
    
  • 但当它是引号中唯一的东西时不会:

    "NASA"
    
  • . . . 你可以在这里看到趋势,在必要时添加额外的“或”语句。

我使用以下字符串对其进行了测试:

这句话以 NASA 结尾。此正则表达式适用于 NASA,但不适用于 nasa.gov/test/nasa/page.html 等 URL。它不适用于 <abbr>NASA</abbr>,因为它被 <abbr> 标签包围。“这个 NASA 被引号包围”,但将被匹配,因为它的格式不像这个“NASA”。

然后您可以简单地使用该正则表达式进行查找,并替换为:

<abbr title="National Aeronautics and Space Administration">NASA</abbr>

注意:引号是我无法绕过的限制,或者我不知道如何轻松绕过。我建议,如果您必须对使用某种类型的脚本语言(例如 Python)的大量文档执行此操作,并避免使用一个大的正则表达式并将其分解为逻辑语句,但这完全是另一个问题。

祝你好运!

于 2012-07-23T19:22:27.910 回答
0

如果支持lookbehinds,这相当简单。

搜索:

(?<!>)NASA

代替:

<abbr title="National Aeronautics and Space Administration">NASA</abbr> 

这会查找NASA不以 . 为前缀的条目>。所以,NASA会匹配,>NASA不会。

于 2012-07-23T19:24:14.560 回答