regex - 如何在 sublime text 的 Title Case 中更改所有 title 属性的值

标签 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> 

我想更改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/

相关文章:

regex - 如何为以 .php 结尾的文件制作正则表达式?

java - 正则表达式在两次出现的定界符之间没有任何内容时拆分字符串

javascript - 更正正则表达式以删除 www. & .com 等来自 url Javascript

javascript - 用 JQuery/Javascript 替换字符串中的所有逗号

sublimetext3 - 如何使用 Sublime Text 3 安装 Zen Coding(现在称为 Emmet)

regex - 构建系统正则表达式捕获

regex - 如何转换使用 Lookahead 的正则表达式模式?

python - 如何在定义的函数Python3中将列表1中的所有元素替换为列表2中的所有元素

string - Powershell 替换字符串中的字符

python-3.x - Sublime Text 3上的Python 3.4