# import re
# import pandas as pd
# 分隔符: (字母数字-) 以外的任何字符串
# 包含: (标点,中文,空格,其他特殊字符), 但不识别\s
# 多个连续分隔符 是一个字符串分隔符(例如多个空格)
# 分割为列表(不分列), 分隔符消失
def myfun(pat: str, string: str):
lis = re.split(pat, string)
ser = pd.Series(string).str.split(pat)
print(lis, ser.tolist()[0])
string = r'12-en中文'
myfun(r"[^a-zA-Z0-9-]+", string) # 正确
myfun(r"[^\w\d-]+", string) # 错误: 分隔符不包含中文
string = r'12-en、'
myfun(r"[^a-zA-Z0-9-]+", string) # 正确
myfun(r"[^\w\d-]+", string) # 正确: 分隔符包含中文标点
# 原因:
# \w 与[a-zA-Z0-9_] 区别在于 \w 包含中文 但不包含中文标点
# \w 等于 [a-zA-Z0-9_] 和中文
# \w\d 等于 [a-zA-Z0-9] 和中文 不包含下划线破案!
- re 与pandas 处理正则表达式
- re.split 与pandas.Series.str.split(expand=False, regex=True) 效果一致
- re 与pandas 其他对应功能 应该也是如此
- \w与 [a-zA-Z0-9_] 的区别
- \s
![# w 与[a-zA-Z0-9_] 区别在于 w 匹配了unicode字符 包含中文!_字符串](https://s2.51cto.com/images/blog/front/202401/937e41d8856371378f66387e9c14f4234dabff.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184)
















