如何在sublime文本中更改Title Case中的所有title属性值

时间:2013-10-07 09:10:41

标签: regex replace sublimetext3

我的项目中有500个HTML文件,"属性中的大小写和引号('<title>)在所有页面中都有所不同,请参阅下面的几个示例

<button title="Next" id="next"> Next</button>
<button title="next"> Next </buton>
<button title=""please go back">Check</button> 

我想更改标题案例

中的所有标题属性
<button title="Next" id="next"> Next</button>
<button title="Next"> Next </buton>
<button title="Please Go Back">Check</button>#

我试图找到并替换 - 启用正则表达式和区分大小写的按钮

  

查找内容: title=(".*")\s
  替换为: title="\u$"

但没有成功。请告诉我我做错了什么?

更新:还想删除额外的' ",请参阅#

2 个答案:

答案 0 :(得分:4)

为了进一步发表评论,首先是问题.*是'贪婪'而不是'懒惰',这意味着它尽可能匹配(例如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

答案 1 :(得分:1)

(?<=title=('|")).+?(?=('|"))

这可以为您提供可以使用的匹配Next next please go back

如果你想提高你的下限,你可以使用匹配的索引在原始字符串中找到你的匹配。

或使用title=('|").+?(\1)查找tekst中的任何标题属性,包括引号