在 EditPad 中匹配没有任何其他内容的符号的第一次出现

时间:2021-08-02 00:31:38

标签: regex select match highlight editpad

有一个像 here 这样的问题询问每一行中第一次出现“1”,但在 EditPad 中它根本不起作用,即使我使用多行搜索面板。< /p>

我打开了正则表达式,突出显示全部。其他功能全部关闭。

  1. /^[^1\n\r]*(1)/m - 不突出显示
  2. ^[^1\n\r]*(1)/m - 不突出显示
  3. ^[^1\n\r]*(1) - 查找所有包含“1”的行并突出显示从行首到数字“1”的所有内容。但我只需要第一次出现的“1”,其他不需要。

我猜 ^[^1\n\r]*(1) 是朝着真正的“第一次出现”迈出的一步,但它还没有。

例如,我有号码 5215681571

我只想突出显示该行中的第一个“1”。表达式 ^[^1\n\r]*(1) 将突出显示 521,这是不可取的。

我也试过 ^(^.*[^1])1 查找包含 1 的每一行并突出显示从开始到最后一个“1”的所有内容。

在 stackoverflow 中,我看到了无数关于如何实现第一次出现的建议,但没有一个在 EditPad 中有效。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在您尝试的模式中,您使用了一个捕获组,前面是一个匹配项。

如果这是 the tool,则正则表达式引擎是 indicated as JGsoft V2 其中 supports 使用 \K 忘记到目前为止匹配的内容。

匹配除 1 或回车符或换行符以外的所有内容:

^[^\r\n1]*\K1

Regex demo

或者匹配除 1 和垂直空格 \v

^[^\v1]*\K1

Regex demo

答案 1 :(得分:0)

除了@第四只鸟的建议之外,EditPad 的 JGSoft 引擎支持无限后视,这让您可以执行此操作(在 EPP Pro 8.2.4 中测试):

(?<=^[^1\r\n]*)1

要捕捉任何奇怪的 unicode 换行符,您还可以使用 [^\p{Zl}] 代替 [^\r\n],产生这两个替代版本:

^[^\p{Zl}1]*\K1

(?<=^[^1\p{Zl}]*)1