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

发布于 2024-07-13 02:49:39 字数 381 浏览 11 评论 0原文

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

我希望能够匹配这样的字符串行:

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

与这样的东西:

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

有没有办法使用 UltraEdit 来完成此操作?

The UltraEdit text editor includes a Perl and Unix compatible regular expression engine for searching.

I want to be able to match a string line this:

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

With something like this:

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

Is there a way to accomplish this using UltraEdit?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自我难过 2024-07-20 02:49:39

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

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

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

做一个小实验,也支持其他一些 Perl 选项。 例如 (?sx-i) 开头将是单行,忽略模式中的额外空格,区分大小写(似乎默认不区分大小写)。

If you put (?s) at the start of pattern it'll enable single line mode so \r\n will not be excluded from matching .*

E.g., the following matches the whole of the branch element (in UEStudio 6 with Perl style regular expression):

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

Doing a little experiment some other Perl options are supported too. e.g. (?sx-i) at the start would be Single line, ignore eXtra whitespace in pattern, case sensitive (it seems to default to case insensitive).

风透绣罗衣 2024-07-20 02:49:39

如果您选择了 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 进行测试。

If you have Perl regular expressions selected, you can do something like:

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

where \s is any whitespace character, including newline and return and \S is any other character. Note that this is greedy by default, so if you have the following string:

<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>

then the one regular expression will find the ENTIRE string as one match. If you don't want to do this, then add ? as follows:

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

As you can see from the answers, there are many ways to accomplish this in UltraEdit!

NOTE: Tested with UltraEdit 14.20.

掐死时间 2024-07-20 02:49:39

你有没有尝试过:

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

Have you tried:

/<branch id="attribute">[.\n]*</branch>/gis
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文