UltraEdit文本编辑器包含一个用于搜索的Perl和Unix兼容的正则表达式引擎。
我希望能够匹配一个字符串:
<branch id="attribute">
<leaf id="attribute"/>
<leaf id="attribute"/>
<leaf id="attribute"/>
</branch>
有这样的事情:
/<branch id="attribute">.*</branch>/gis
有没有办法使用UltraEdit完成此任务?
答案 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