2009-01-29 48 views

回答

2

如果您选择Perl的正则表达式,你可以这样做:

<branch id="attribute">[\s\S]*</branch> 

其中\ s是任何空白字符,包括换行,返回和\ S是其他任何角色。请注意,这是默认的贪婪,所以如果你有以下字符串:

<branch id="attribute"> 
    <leaf id="attribute"/> 
    <leaf id="attribute"/> 
    <leaf id="attribute"/> 
</branch> 
<branch id="attribute"> 
    <leaf id="attribute"/> 
    <leaf id="attribute"/> 
    <leaf id="attribute"/> 
</branch> 

那么一个正则表达式会发现整个字符串作为一个匹配。如果你不希望这样做,再加入?如下:

<branch id="attribute">[\s\S]*?</branch> 

你可以从答案看,有很多方法在UltraEdit做到这一点!

注意:测试UltraEdit 14.20。

+0

我不知道UltraEdit是否支持/ s像使用OP这样的修饰符,但[\ s \ S]技巧也应该可以工作。那加上'?'对于非贪婪匹配,应该全部回答这个问题。 – 2009-01-30 04:34:33

3

如果你把(?S)在模式的开始,它会使得单线模式,这样\ r \ n将不会从匹配中排除。*

例如,下面的整个分支的匹配元素(在UEStudio 6中用Perl风格的正则表达式):

(?s)<branch id="attribute">.*</branch> 

做一些小实验也支持其他一些Perl选项。例如(?sx-i)在开始时是单行,忽略模式中的扩展空格,区分大小写(它似乎默认为不区分大小写)。

+0

这个正则表达式也适用于我。谢谢! – braveterry 2009-01-30 15:00:31

-2

你试过:

/<branch id="attribute">[.\n]*</branch>/gis 
+0

他在特定的文本编辑器中询问正则表达式语法,该语法不使用您显示的语法。此外,\ n可能与Windows上使用的\ r \ n不匹配,因此您需要使用[。\ r \ n]而不仅仅是[。\ n] – Eddie 2009-01-29 22:07:16