【问题标题】:Regular expression find and select正则表达式查找和选择
【发布时间】:2017-12-14 15:09:25
【问题描述】:

我正在尝试选择所有连字符,以便可以用空格替换它们。我这样做是为了在我的 CMS 中提供更好的可访问性。我目前正在使用原子查找和替换正则表达式选项。

<img src="http://myurl.com/images/name-of-image.jpg" title="this-is-my-title" alt="here-is-a-description-of-this-image" />

使用正则表达式,我想选择 title 和 alt 并将每个连字符替换为一个空格。

所以我想从以下开始:

^(alt|title=\")[\-]*(\")$ //does not work 

这可能是$1,但我不知道如何仅选择符合此条件的连字符。必须有解决方案。

【问题讨论】:

  • 请指定语言、技术
  • 您的示例不是以alttitle=" 开头的,因此^(alt|title=\") 无法匹配。

标签: regex atom-editor


【解决方案1】:

简介

鉴于您没有指定语言,我假设 表示任何有效的正则表达式,并且您将在之后让它工作。因此,此答案使用 PCRE 正则表达式。

您应该做的是单独获取所有属性,然后如果该属性在您的列表["alt", "title"] 中,您应该简单地进行字符串替换以将- 更改为


代码

See regex in use here

(?:\b(?:alt|title)="|\G(?!\A))[^"-]*\K-

结果

输入

<img src="http://myurl.com/images/name-of-image.jpg" title="this-is-my-title" alt="here-is-a-description-of-this-image" />

输出

<img src="http://myurl.com/images/name-of-image.jpg" title="this is my title" alt="here is a description of this image" />

说明

  • (?:\b(?:alt|title)="|\G(?!\A)) 匹配以下任意一项
    • \b(?:alt|title)=" 匹配以下
      • \b 将位置断言为单词边界
      • (?:alt|title) 匹配 alttitle 字面意思
      • =" 从字面上匹配这个
    • \G(?!\A)在上一场比赛结束时断言位置
  • [^"-]*? 匹配任何不在集合中的字符(除"- 之外的任何字符)任意次数
  • \K 重置报告匹配的起点。任何先前使用的字符都不再包含在最终匹配中
  • - 匹配连字符 - 字面意思

【讨论】:

  • 对不起,我没有提到我正在使用 atom 的查找和替换来执行此操作。我尝试使用您的示例,但它不起作用 Atom 可能不知道那些元字符?感谢您的帮助。很抱歉因为我不知道它的具体工作原理而含糊其辞。
  • @Wallace 如果你下载并使用 Notepad++,你可以使用我的代码。
  • @Wallace 我能想到的唯一可能在 Atom 中工作的方法是使用 (\b(?:alt|title)="[^"-]*)- 并替换为 $1 。多次运行(直到不再进行替换)
猜你喜欢
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 2015-04-03
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多