是否可以在UltraEdit的换行符中使用正则表达式匹配模式?

时间:2009-01-29 21:37:06

标签: regex text-editor ultraedit

UltraEdit文本编辑器包含一个用于搜索的Perl和Unix兼容的正则表达式引擎。

我希望能够匹配一个字符串:

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

有这样的事情:

/<branch id="attribute">.*</branch>/gis

有没有办法使用UltraEdit完成此任务?

3 个答案:

答案 0 :(得分:3)

如果您将(?s)放在模式的开头,它将启用单行模式,因此\ r \ n将不会从匹配中排除。*

,例如,以下匹配整个分支元素(在UEStudio 6中使用Perl样式正则表达式):

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

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

答案 1 :(得分: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>

然后一个正则表达式会将ENTIRE字符串作为一个匹配项找到。如果您不想这样做,请按以下方式添加?

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

从答案中可以看出,在UltraEdit中有很多方法可以实现这一点!

注意:使用UltraEdit 14.20进行测试。

答案 2 :(得分:-2)

你试过了吗?

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