正则表达式的\w换模式了吗?

如图所示,正则表达式的\w过去一直都是ASCII模式,但是最近突然发现变成UNICODE模式,导致以前的函数都失效了,只有我一个人是这样吗?
浏览 116
1
5
分享
5 +1
4
1 +1
全部评论 4
 
PengUAV
不是你个人环境问题,新版 WPS 365 的 REGEXP 底层 PCRE 引擎更新,默认开启了 Unicode 单词模式,\w不再只匹配[a‑zA‑Z0‑9_],汉字、全角字符这类 Unicode 字母字符也会被\w捕获,导致旧公式批量失效。 旧写法:=REGEXP(C1,"\w") 新版默认 Unicode 模式,\w同时匹配数字、字母、汉字,示例文本123一二三ABC,会把一、二、三也提取出来,和你第一张截图现象完全一致。 修复写法:=REGEXP(C1,"(?a)\w") (?a)是内联 ASCII 修饰符,强制把\w切回传统 ASCII 模式,此时\w严格等价[a-zA‑Z0‑9_],汉字会被直接跳过,输出结果和老版本 WPS 行为对齐,就是你的第二张截图效果。 旧文件打开后,原有正则公式会直接受影响,批量旧脚本建议统一加上(?a)前缀修复,避免业务逻辑出错。
   浙江省
举报
3
3
亂雲飛渡
感谢老师分享,学习新知识了
· 广东省
举报
0
0