4

我想使用 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

正则表达式应该是什么样子的?

非常感谢大家。

4

2 回答 2

6

通常点.匹配除换行符以外的所有字符。使用s 正则表达式中的修饰符强制点匹配所有字符,包括换行符。

于 2010-05-20T09:29:14.517 回答
5

在 UltraEdit 中,您需要在(?s)正则表达式之前添加点匹配换行符。

即,搜索

(?s)<style type="text/css">.*?</style>

我还使量词变得惰性 ( ),因为否则您将匹配整个文件中.*?从第一个<style>到最后一个的所有内容。</style>

另请注意,这是一个不稳定的解决方案,因为正则表达式根本无法可靠地解析 HTML。在 UltraEdit 中,这就是您所拥有的一切 - 脚本语言和解析器会更好,但如果它适用于您的情况,那就太好了。只要确保你没有比你想要的更多(或更少)匹配(想想//comment containing a </style> tag)。

于 2010-05-20T09:34:16.720 回答