我们如何匹配任何单个字符,包括Perl正则表达式中的换行符?

时间:2010-05-20 09:24:57

标签: regex text pcre ultraedit

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

正则表达式应该如何?

非常感谢大家。

2 个答案:

答案 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)。