我想使用UltraEdit正则表达式(perl)将以下文本替换为一堆html文件中的其他文本:
<style type="text/css">
#some-id{}
.some-class{}
//many other css styles follow
</style>
我尝试使用<style type="text/css">.*</style>
,但当然它不匹配任何东西,因为点匹配除换行之外的任何字符。我也希望匹配换行符,换行符可能是\r\n
或\n
。
正则表达式应该如何?
非常感谢大家。
答案 0 :(得分:6)
通常,点.
匹配除新行之外的所有字符。使用s
modifier in the regex强制点匹配所有字符,包括新行。
答案 1 :(得分:5)
在UltraEdit中,您需要将(?s)
添加到正则表达式中,以使点匹配换行符。
予。例如,搜索
(?s)<style type="text/css">.*?</style>
我也使量词懒惰(.*?
),否则您将匹配整个文件中第一个<style>
到最后</style>
的所有内容。
另外请注意,这是一个片状解决方案,因为正则表达式无法可靠地解析HTML。在UltraEdit中,这就是你所拥有的 - 脚本语言和解析器会更好,但如果它适用于你的情况,那么很棒。只要确保你不匹配(或更少)你想要的(想想//comment containing a </style> tag
)。