我正在尝试选择所有连字符,以便我可以用空格替换它们。我这样做是为了在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
但我不知道如何只选择符合此条件的连字符。必须有一个解决方案。
答案 0 :(得分:0)
看看你是如何指定一种语言的,我只是假设regex表示任何正在运行的正则表达式,并且您将在之后使用它。因此,这个答案使用PCRE正则表达式。
您应该做的是单独获取所有属性,然后如果属性在列表["alt", "title"]
中,您应该只需更换字符串即可将-
更改为。
(?:\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)
按字面匹配alt
或title
="
按字面意思匹配\G(?!\A)
在上一场比赛结束时断言位置[^"-]*?
匹配任何不在集合中的字符(除"
和-
之外的任何字符数)\K
重置报告的匹配的起点。最终匹配中不再包含任何以前消费的字符-
字面上匹配连字符-