gpt4 book ai didi

ruby - 什么是提取单词和标点符号但忽略小数和数字的正则表达式?

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

我有以下句子:

"We bought 3.5 million shirts."

我想创建一个数组,其中包含所有单词和标点符号,但不包含包含小数点的数字。

我有以下正则表达式:

/[\D]+/

然而,这仍然会获取数字之间的小数点,如下所示:

[“我们”、“买了”、“.”、“百万”、“衬衫”、“.”]

我希望结果如下:寻找以下结果:

["We", "bought", "million", "shirts", "."]

请注意“.”从数字中排除。

我如何仍然选择句子末尾的句点而不是数字前出现的小数点?

最佳答案

我建议使用一个小的增强功能:将 \D+ 替换为 \p{L}+(或 [[:alpha:]]+) 只匹配 1+ 个字母,然后限制 [[:punct:]] 仅在它不是 时才匹配。 后跟一个数字(负前瞻(?!\.\d):

s = "We bought 3.5 million shirts."
res = s.scan(/\p{L}+|(?!\.\d)[[:punct:]]/)
puts res # => [We, bought, million, shirts, .]

参见 Ruby demo

另一种方法是首先使用 \d*\.?\d+ 正则表达式删除所有数字,然后收集带有标点符号的“单词”:

s = "We bought 3.5 million shirts."
res = s.gsub(/\d*\.?\d+/, '').scan(/\w+|\p{P}/)

参见 this Ruby demo

关于ruby - 什么是提取单词和标点符号但忽略小数和数字的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41458690/

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