我的项目中有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$"
但没有成功。请告诉我我做错了什么?
更新:还想删除额外的' "
,请参阅#
答案 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中的任何标题属性,包括引号