You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何用正则表达式提取多文本文件中的带重音单词

提取文件夹中所有文本文件内仅由重音字符组成的单词

正确的正则表达式

要精准匹配完全由重音字符构成的完整单词,可以使用支持Unicode属性的正则表达式,覆盖所有非ASCII的带重音字母:

\b[\p{M}\p{L}&&[^\p{ASCII}]]+\b
  • \b:锁定单词边界,确保抓取的是完整单词而非片段
  • [\p{M}\p{L}&&[^\p{ASCII}]]:匹配所有非ASCII的字母(\p{L})及组合重音标记(\p{M}),覆盖各类带重音的字符(如é、ñ、à、ç等)
  • +:匹配一个或多个符合条件的字符

如果你的工具不支持Unicode属性,可使用指定重音字符范围的兼容版本:

\b[À-ÿâäàåçéêëèïîìôöòûüùñ]+

批量处理脚本(Python)

以下代码可遍历目标文件夹内所有.txt文件,自动提取符合要求的单词并去重:

import os
import re

# 正则模式(支持Unicode重音字符)
pattern = re.compile(r'\b[\p{M}\p{L}&&[^\p{ASCII}]]+\b', re.UNICODE)
# 替换为你的目标文件夹路径
target_dir = "./your_text_folder"

extracted_words = set()

# 遍历文件夹中所有文本文件
for root, _, files in os.walk(target_dir):
    for file in files:
        if file.lower().endswith(".txt"):
            file_path = os.path.join(root, file)
            with open(file_path, 'r', encoding='utf-8') as f:
                content = f.read()
                matches = pattern.findall(content)
                extracted_words.update(matches)

# 输出结果
print("提取到的仅含重音字符的单词:")
for word in sorted(extracted_words):
    print(word)

问题排查

你之前的正则失效通常是以下原因:

  • 未使用\b单词边界,导致匹配普通单词中的重音字符片段
  • 仅匹配单个重音字符而非连续的完整单词
  • 未排除ASCII普通字符,导致混入带部分重音的普通单词

内容的提问来源于stack exchange,提问作者RONNY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:36:28