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

Python正则表达式需求:提取含多语言字符、数字、撇号的分词

符合需求的正则表达式方案

直接使用以下正则表达式配合Python的re.findall()即可满足你的需求:

import re

# 定义正则模式
pattern = r"(?=[^\W_])(?:[^\W_]|')+"

# 测试示例1
text1 = "Test, this is a String 123!"
print(re.findall(pattern, text1))  # 输出: ['Test', 'this', 'is', 'a', 'String', '123']

# 测试示例2
text2 = "λάκιäsañ"
print(re.findall(pattern, text2))  # 输出: ['λάκιäsañ']

# 测试示例3
text3 = "not_underscores"
print(re.findall(pattern, text3))  # 输出: ['not', 'underscores']

正则逻辑说明

  • (?=[^\W_]):正向预检查,确保匹配的内容里至少有一个字母/数字(排除下划线),避免匹配纯撇号的无效内容。
  • (?:[^\W_]|')+:非捕获分组,匹配任意数量的字母/数字([^\W_]等价于不含下划线的\w,支持多语言字符)或撇号,让这些字符可以组合成一个整体。

你之前尝试的正则问题分析

  1. [\w\']+:\w包含下划线,所以下划线会被当成匹配内容的一部分,导致included_Underscores无法分割成两个独立字符串。
  2. ([^\W_]+(?:\')*):只能匹配字母数字后跟0个或多个撇号,撇号中间的字母数字无法被纳入同一个匹配项,比如don't会被拆成don和t。
  3. ([\w\'](?<=[^_]))+:\w仍包含下划线,且位置断言逻辑错误,导致单词最后一个字符被错误分离。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:45:55