我的项目中有 500 个 HTML 文件,其中大小写和引号( "
或 '
)在 <title>
中所有页面的属性都不同,请参见下面的几个示例
<button title="Next" id="next"> Next</button>
<button title="next"> Next </buton>
<button title=""please go back">Check</button>
我想更改Title Case中的所有标题属性
<button title="Next" id="next"> Next</button>
<button title="Next"> Next </buton>
<button title="Please Go Back">Check</button>#
我已尝试查找和替换 - 已启用正则表达式和区分大小写的按钮
Find What:
title=(".*")\s
Replace With:title="\u$"
但是没有成功。请告诉我我做错了什么?
已更新:还想删除额外的 ' "
看#
最佳答案
为了进一步说明我的评论,首先是 .*
的问题“贪婪”而不是“懒惰”,这意味着它尽可能匹配(即您的示例中的 Next"> Next</button><button title="Next
)。
快速修复是使用“惰性”.*
相反,又名 .*?
(我添加了 ?
以指示可能存在空间,因为您的示例中没有空间):
title=(".*?")\s?
要提高性能,您可以使用否定类:
title=("[^"]+")\s?
在哪里[^"]+
匹配除 "
以外的任何字符.
为了应对不同的报价,您可以使用:
title=("[^"]+"|'[^']+')\s?
这基本上意味着 "[^"]+"
或 '[^']+'
括号内的部分。
对于替换和连续引号问题:
title=(?:"+([^"]+)"+|'+([^']+)'+)\s?
替换为:
title="\u$1$2"
唯一的问题是最后一行是<button title="Please go back">Check</button>
, 如果这不是问题...
编辑:\G
确实有效。使用第二个替换:
(?:(?<=title=")|(?<!^)\G)[^\s"]+\s?
替换为:
\u$0
关于regex - 如何在 sublime text 的 Title Case 中更改所有 title 属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19220855/