正则表达式查找和选择

时间:2017-12-14 15:09:25

标签: regex atom-editor

我正在尝试选择所有连字符,以便我可以用空格替换它们。我这样做是为了在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但我不知道如何只选择符合此条件的连字符。必须有一个解决方案。

1 个答案:

答案 0 :(得分:0)

看看你是如何指定一种语言的,我只是假设表示任何正在运行的正则表达式,并且您将在之后使用它。因此,这个答案使用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重置报告的匹配的起点。最终匹配中不再包含任何以前消费的字符
  • -字面上匹配连字符-