【问题标题】:RegEx string to find two strings and delete the rest of the text in the fileRegEx 字符串查找两个字符串并删除文件中的其余文本
【发布时间】:2020-10-08 14:37:18
【问题描述】:

我需要用记事本+++查找并删除文本文件中的其余部分 我希望你使用 RegeX 来查找 thban 的变体.....该变量后面总是最多有 5 个字符(见点)。 使用我的搜索字符串,它击中了最后一行但整行。我只想保留这个词。 当这个工作时,我还想保留包含 C3 的单词..... 可以删除 tekst 文件的其余部分。 它也应该不区分大小写

(?!thban\w+).*\r?\n?

\

THBANES900 and C3950 bla bla
THBAN
..THBANES901.. C3850 bla bla
THBANMP900
**..thbanes900..**

这应该会导致

THBANES900 C3950
THBAN
THBANES901 C3850
THBANMP900
thbanes900

【问题讨论】:

  • 你的例子没有显示“它后面总是有最多 5 个字符”是什么意思。你是说“之后”吗?那为什么只有THBAN 的行保持不变?
  • appolgies 我会修改,但实际上我的意思是在固定字符串之后

标签: regex find notepad++


【解决方案1】:

也许只是捕捉那些感兴趣的词而不是替换其他所有词?在 Notepad++ 中搜索模式:

^.*\b(thban\S{0,5})(?:.*(\sC3\w+))?.*$|.+

Online Demo

  • ^ - 开始字符串 ancor。
  • .*\b - 除换行符以外的任何字符零次或多次直到单词边界。
  • (- 打开第一个捕获组。
    • thban\S{0,5} - 匹配“thban”和零个或 5 个非空白字符。
    • ) - 关闭第一个捕获组。
  • (?: - 打开非捕获组。
    • .* - 除换行符以外的任何字符零次或多次。
    • ( - 打开第二个捕获组。
      • \sC3\w+ - 一个空格字符,匹配“C3”和一个或多个单词字符。
      • ) - 关闭第二个捕获组。
    • )? - 关闭非捕获组并将其设为可选。
  • .* - 除换行符以外的任何字符零次或多次。
  • $ - 结束字符串 ancor。
  • | - 交替 (OR)。
  • .+ - 除换行符以外的任何字符一次或多次。

替换为:

$1$2

在此之后,您可能会得到空行,您可以使用内置选项快速删除。我不知道英文术语,所以我制作了一个 GIF 来告诉你在哪里可以找到这些按钮:

我不确定忽略大小写的英文复选按钮是什么。但请确保未勾选。

【讨论】:

  • 我刚刚在发布我的答案时看到了您的答案。你得到了我的投票。
  • 提个醒,我会在thbanC3 之前插入单词边界
【解决方案2】:

你可以使用

查找内容:     (?|\b(thban\S{0,5})|\s(C3\w+))|(?s:.)
替换为(?1$1\n:)

屏幕截图和设置

详情

  • (?| - 分支重置组的开始:
    • \b(thban\S{0,5}) - 第 1 组:一个单词边界,然后是 thban 和任何 0 到 5 个非空白字符
    • | - 或
    • \s(C3\w+) - 一个空白字符,然后是第 1 组:C3 和一个或多个单词字符
  • ) - 分支重置组结束
  • | - 或
  • (?s:.) - 任意一个字符(包括换行字符)

替换是

  • (?1 - 如果第 1 组匹配,
    • $1\n - 第 1 组值带有换行符
    • : - 否则,替换为空字符串
  • ) - 条件替换模式结束

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 2019-01-10
    • 2017-02-04
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 2018-11-04
    • 2019-01-24
    相关资源
    最近更新 更多