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

如何使用正则表达式将字符串拆分为单词、标点、空格并正确处理撇号

正则拆分方案

实现代码

你可以使用以下通用正则实现需求,以Dart为例写法如下:

final result = RegExp(r"(?:\w(?:'\w)*)+|\s+|[^\w\s]")
    .allMatches(inputString)
    .map((match) => match.group(0))
    .toList();

正则逻辑说明

  • 第一部分 (?:\w(?:'\w)*)+:匹配合法带撇号的单词,仅当撇号出现在两个单词字符中间时才会被纳入单词范围,可正确匹配you're、I'm、didn't这类场景,同时规避了首尾撇号被误算进单词的问题
  • 第二部分 \s+:匹配连续的任意长度空格,符合连续空格作为单个元素的要求
  • 第三部分 [^\w\s]:匹配所有非单词、非空格的字符,即全部标点符号,无需手动枚举标点,具备全场景通用性

测试验证

以你给出的示例输入测试:
输入字符串:"One day you're going to 'solve' this problem"
输出结果:["One", " ","day"," ","you're"," ","going"," ","to"," ","'","solve","'"," ","this","problem"]
完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:06:01