gpt4 book ai didi

ruby - 如何在非传统空白处拆分字符串?

转载 作者:数据小太阳 更新时间:2023-10-29 08:58:41 33 4
gpt4 key购买 nike

ruby 2.4。我想用多个空格分割一行,即多个空格或不间断空格,或者不是单个空格的空格(如制表符或换行符)。我尝试了以下

tokens_by_spaces = line.split(/\s\s+/)

但这失败了。例如,如果行是

"A B\tC D"

以上返回

["A B\tC D"]

而我希望它返回

["A B", "C D"]

同样,如果我的线路是

"ab c  def g"

我想要的结果是

["ab c", "def g"]

最佳答案

我建议使用

/[ \u00A0]*(?:[[:space:]&&[^ \u00A0]][ \u00A0]*)+|[[:space:]]{2,}/

参见 regex demo .

虽然看起来 \s 可以匹配任何 Unicode 空格,但前提是该模式以 (?u) 为前缀,[[:space:]] 似乎是一种更常用的匹配任何 Unicode 空格的方法。

详细信息:

该模式有 2 个分支匹配...

  • [\u00A0]*(?:[[:space:]&&[^\u00A0]][\u00A0]*)+ - 至少包含 1 个非空间/不间断空间
    • [\u00A0]* - 出现零次或多次常规或不间断空格
    • (?:[[:space:]&&[^\u00A0]][\u00A0]*)+ - 一次或多次出现:
      • [[:space:]&&[^\u00A0]] -(字符类减法)除常规/不间断空格之外的任何空格
      • [\u00A0]* - 零个或多个常规/不间断空格
  • | - 或者
  • [[:space:]]{2,} - 2 个或更多空白符号

关于ruby - 如何在非传统空白处拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42147448/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com