["10", "ABC", "DEF", "GHI"] "10.00 DE-6ren">
gpt4 book ai didi

ruby - 如何在 "."上拆分,但前提是后面有非数字?

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

我想用空格或 "." 分隔一行,分隔行前面的数字和后面的非数字。我想像这样拆分:

"10.ABC DEF GHI" # => ["10", "ABC", "DEF", "GHI"]
"10.00 DEF GHI" #=> ["10.00", "DEF", "GHI"]

我有

words = line.strip.split(/(?<=\d)\.|[[:space:]]+/)

但我发现这并不完全符合我的要求。虽然它会分割线:

line = "10.ABC DEF GHI"
words = line.strip.split(/(?<=\d)\.|[[:space:]]+/) # => ["10", "ABC", "DEF", "GHI"]

它也会错误地拆分

line = "10.00 DEF GHI"
line.strip.split(/(?<=\d)\.|[[:space:]]+/) # => ["10", "00", "DEF", "GHI"]

如果 "." 后面有非数字,如何更正我的正则表达式以仅在点上拆分?

最佳答案

添加 negative lookahead (?!\d)\. 之后:

/(?<=\d)\.(?!\d)|[[:space:]]+/
^^^^^^

如果 . 后面跟一个数字,则匹配失败。

参见 Rubular demo .

关于ruby - 如何在 "."上拆分,但前提是后面有非数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42558278/

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