【发布时间】:2015-09-28 07:46:10
【问题描述】:
我有一个 HTML 并且 alt 标签是这种格式:
alt="something-nice-and-beautiful"
如何将所有连字符 - 替换为仅在 alt 标签之间的空格?
【问题讨论】:
标签: regex replace notepad++ hyphen
我有一个 HTML 并且 alt 标签是这种格式:
alt="something-nice-and-beautiful"
如何将所有连字符 - 替换为仅在 alt 标签之间的空格?
【问题讨论】:
标签: regex replace notepad++ hyphen
我仍然在思考这个问题。我的第一个倾向是说用这个作为搜索
(alt="[^"]*?)\-(.*?")
然后替换为\1 \2。每次运行时,它会将一个连字符替换为一个空格,继续执行 Replace All 直到没有匹配项。如果我想得更多,我可能会想出一个更优雅的解决方案,但这很有效。
【讨论】:
(alt="[^-"]*)- 替换:$1
(alt="[0-9 A-Z a-z]*)\-(.*)\-(.*)\-(.*) 表达式替换为 $1 $2 $3 $4 这将替换所有 3 个连字符一枪。
.*? 中的问号告诉它采用最短的匹配,这保证了第二组在它找到的第一个双引号处停止匹配。因此,我们不必担心匹配会超出 alt 属性的末尾。
(alt="[^"]*?)\-(.*?")。现在应该通过这个例子,如果你想出另一种方法来打破它,请告诉我。
在源表达式中(确保启用.* 正则表达式按钮)。由于这不适用于单个表达式,因此我会这样做(当然,假设您的标签最多具有可管理的长度!)
搜索:
(?<=alt=")(\w+)-(?=")
替换为:
$1
然后再次搜索/替换,添加(\w+)-:
(?<=alt=")(\w+)-(\w+)-(?=")
$1 $2
再说一遍:
(?<=alt=")(\w+)-(\w+)-(\w+)(?=")
$1 $2 $3
...
(?<=alt=")(\w+)-(\w+)-(\w+)-(\w+)(?=")
$1 $2 $3 $4
添加额外的单词以确保替换所有标签。
【讨论】: