桐木舟学英语人工智能

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 148|回复: 1

正则表达式提取文本 高效文本筛选技巧 Excel & Notepad++筛选文字 找到并保留含有某个字母的单词 同时删除不符合条件的单词

[复制链接]

305

主题

31

回帖

1155

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1155
发表于 2025-3-12 09:12:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看单词列表,假如这个列表有几百个单词:
that,this,shout,cat,earth,finger......
现在我想在整个的单词列表中,找到含有字母a的单词,一次性找出来,并且把其余的都删除,只剩下我需要的,含有特定字母a的单词,我手上只有常用工具,比如,excel,word,EditPlus, notepat++,我如何才能做到?

你可以使用 Excel、Notepad++、EditPlus 这些工具中的搜索或筛选功能来快速找到并保留含有字母 'a' 的单词,同时删除不符合条件的单词。以下是具体方法:

方法 1:
使用 Excel适用场景:如果你的单词列表是一列单词(每个单词占一行),Excel 过滤功能非常方便。
步骤
  • 将单词粘贴到 Excel(确保每个单词占一行)。
  • 使用筛选功能
    • 选中单词列,点击 “数据” → “筛选”(Filter)。
    • 在下拉筛选框中,选择 “文本筛选” → “包含”(Contains)。
    • 输入 “a”,然后点击 确定
  • 删除不符合的单词
    • 选中筛选出的不含 'a' 的单词,右键 → “删除行”
    • 关闭筛选,剩下的就是符合条件的单词。

方法 2:
使用 Notepad++适用场景:如果你的单词是纯文本格式,可以使用 Notepad++ 的“查找和替换”功能。
步骤
  • 打开 Notepad++,粘贴单词列表(确保每个单词占一行)。
  • 使用正则表达式查找并删除不包含 'a' 的单词
    • 按 Ctrl + H 打开“查找和替换”窗口。
    • 查找目标:^[^a\r\n]*$
    • 替换为:留空
    • 勾选 “正则表达式” 模式,然后点击 “全部替换”
    • 这样,不含 'a' 的单词就会被删除。

方法 3:
使用 EditPlus适用场景:EditPlus 也支持正则表达式查找,操作类似 Notepad++。
步骤
  • 打开 EditPlus,粘贴单词列表
  • 使用查找和替换
    • Ctrl + H,打开“查找和替换”窗口。
    • 选择 “正则表达式” 模式。
    • 在“查找内容”中输入:^[^a\r\n]*$
    • “替换为”留空。
    • 点击 “全部替换”

方法 4:使用 Python(适合批量处理)适用场景:如果你对编程感兴趣,可以用 Python 处理更大的数据集。
Python 代码
with open("wordlist.txt", "r") as file:
    words = file.readlines()

filtered_words = [word.strip() for word in words if 'a' in word]

with open("filtered_words.txt", "w") as file:
    file.write("\n".join(filtered_words))

print("筛选完成!已保存到 filtered_words.txt")

说明
  • 这个代码会读取 wordlist.txt 文件,筛选出含有 'a' 的单词,并保存到 filtered_words.txt。
  • 适合大规模单词列表处理。

结论
如果你不熟悉编程:
  • Excel 适合直观操作,筛选 后删除。
  • Notepad++ / EditPlus 适合处理纯文本,正则表达式 删除无关单词。
如果你需要更灵活的处理:Python 适合批量筛选和自动化处理。

非常值得注意的问题来了。
上述这个方法只适合普通的英语字母。如果是小语种,特殊字符就太平常了,这个方法就不行了。
要是碰到特殊字符就要选择下面的方法。比如,我要在一大堆越南语词汇里,寻找所有含“ế”的行,并且删除不含这个字母的行。
根据 Notepad++ 可能版本不同,或者有些设置不一样。请按照下面的方法操作,确保可以成功删除不含“ế”的行:

方法 1:确保标记成功
  • 按 Ctrl + F 打开“查找”窗口
  • 切换到“标记”选项卡(Mark)。
  • 输入正则表达式:^.*ế.*$
  • 勾选
    • “区分大小写”
    • “正则表达式”
    • “标记所在行”
  • 点击“全部标记”(如果正确,行号左侧会出现小蓝点)。

方法 2:
删除未标记的行
如果 按 Ctrl + L 没有反应,请尝试手动删除:
  • 点击菜单栏:搜索 → 标记 → 删除未标记的行。
  • 如果没有“删除未标记的行”选项,请尝试更新 Notepad++ 到最新版本(7.9 及以上)。

方法 3:
使用替换(无需标记)如果 Ctrl + L 不行,你也可以直接用替换功能:
  • 按 Ctrl + H 打开“查找和替换”窗口
  • 输入查找目标:^(?!.*ế).*\r?\n?
  • 替换为:(留空)。
  • 勾选“正则表达式”模式
  • 点击“全部替换”,这样所有 不含“ế” 的行就会被删除。

如果 Ctrl + L 仍然不起作用,你可以确认:
  • 你的 Notepad++ 版本,如果太旧建议更新。
  • 标记是否成功(行号左侧是否有小蓝点)。
  • 尝试手动从菜单删除未标记行(方法 2)。
试试看吧。
顺便说,Notepad++ 版本,也是很关键的。但是哪怕是老的版本,第三个方法也是合适的。记住这个正则表达式:
^(?!.*ế).*\r?\n?
如果要寻找其他的字母,只需要换“ế”。
如果要寻找不同的字母组合,只需要把正则表达式中的 "ế" 换成你需要的字母或字母组合。例如:
1. 查找包含“ờ”的行,并删除其他行
^(?!.*ờ).*\r?\n?
效果:只保留包含“ờ”的行,删除不包含“ờ”的行。

2. 查找包含多个特定字母的行
如果想查找 包含“ờ”或“ế” 的行,可以用 |(表示“或”):
^(?!.*(ờ|ế)).*\r?\n?
效果:只保留包含 “ờ”或“ế” 的行,删除其他行。

3. 查找包含特定字母组合的行
如果你想 只保留包含“ch” 的行,可以这样写:
^(?!.*ch).*\r?\n?
效果:只保留包含 "ch" 的行,删除其他行。

说明
  • (?!.*X) 这个部分表示 “不包含 X” 的行。
  • \r?\n? 处理不同的换行符,确保完整删除整行。
  • |(竖线) 代表 “或”,可以用于多个匹配条件。
你可以随时更改 “ế” 成任何你想查找的字母或字母组合,方法是一样的!
回复

使用道具 举报

305

主题

31

回帖

1155

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1155
 楼主| 发表于 2025-3-20 14:29:58 | 显示全部楼层
接着咱们看看类似的正则表达式,有没有下面这样的正则表达式呢?
在notepad中,我可以挑选所有含有某个字符,或者字母,或单词的行,比如我们举例说,含有字母“or”的单词所在的行,都剪切下来,复制到另一个txt文本,然后,原有的文本 ,就少了这些含有字母“or”的单词了,这样的好处在于,我又可以操作下一步,去剪切含有其他字母的行,到我的另一个文本去。

您想要在 Notepad++ 中使用正则表达式来筛选出包含特定字母、字符或单词的所有行,并将这些行复制到另一个文本文件中。与此同时,您还想从原有的文本中删除这些行,继续对其他包含不同字母、字符或单词的行进行同样的操作。
实现步骤:
  • 打开 Notepad++ 并导入您的文本文件
  • 打开“查找和替换”窗口
    • 按 Ctrl + F 打开 查找 窗口。
  • 启用正则表达式模式
    • 在窗口的底部,勾选 正则表达式 选项。
  • 输入正则表达式筛选含有某字母或单词的行
    • 查找内容 中输入正则表达式,来匹配包含特定字母或单词的行。
    • 例如,如果您想筛选出所有包含字母“or”的行,正则表达式如下:
      ^.*or.*$解释:
      • ^ 表示行的开头。
      • .* 表示任意字符(包括空格)零次或多次。
      • or 是您要查找的字母或单词。
      • .*$ 表示从 or 之后的任何字符,直到行尾。
  • 使用“查找所有匹配项”
    • 点击 查找所有匹配项 按钮。这时,所有包含“or”的行都会显示在底部的结果面板中,并且这些行会在文本中高亮显示。
  • 复制这些行
    • 您可以手动选择结果面板中的所有匹配项(或直接在文本中选中高亮显示的行),然后复制到另一个文本文件。
  • 删除这些行(可选步骤):
    • 您也可以点击 查找和替换 窗口中的 替换 选项,将匹配的行删除:
      • 查找内容 中输入相同的正则表达式(例如:^.*or.*$)。
      • 替换为 中留空。
      • 点击 全部替换,这将删除所有匹配的行。
  • 继续进行下一步操作
    • 一旦删除了包含字母“or”的行,您可以继续使用类似的方法,查找并操作包含其他字母、字符或单词的行。
示例:假设您有以下文本:
I love the color orange.The dog ran around the park.My brother is a doctor.He enjoys reading horror books.
  • 如果您希望找到所有包含“or”的行,正则表达式是: ^.*or.*$。
  • 使用 查找所有匹配项 后,您可以看到以下匹配的行:I love the color orange.My brother is a doctor.He enjoys reading horror books.
  • 然后,您可以将这些行复制到另一个文件,并删除原文本中的这些行。
关键点:
  • 查找所有匹配项:这个操作允许您筛选出所有包含特定字母或单词的行,方便复制和剪切。
  • 正则表达式:可以灵活地匹配不同的字母、字符或单词。您可以根据需要修改正则表达式来处理不同的字符组合。
通过这个方法,您可以一步步地筛选出包含特定字符、字母或单词的行,并将它们转移到另一个文件,或者删除原文本中的这些行。这样,您就可以反复进行操作,直到完成所有的筛选和删除任务。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|桐木舟论坛

GMT+8, 2025-5-1 18:13 , Processed in 0.037969 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表