gpt4 book ai didi

ruby - 如何编写捕获字符串的第一个非数字部分且不包含 3 个或更多空格的正则表达式?

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

我正在使用 Ruby 2.4。我想从字符串中提取第一次连续出现的不包含至少三个或更多空格的非数字字符。例如,在这个字符串中

str = "123 aa bb      cc 33 dd"

第一个这样的出现是 "aa bb "。我认为下面的表达式会对我有所帮助

data.split(/[[:space:]][[:space:]][[:space:]]+/).first[/\p{L}\D+\p{L}\p{L}/i]

但如果字符串是 "123 456 aaa",它无法返回 "aaa",这是我希望它返回的。

最佳答案

r = /
(?: # begin non-capture group
[ ]{,2} # match 0, 1 or 2 spaces
[^[ ]\d]+ # match 1+ characters that are neither spaces nor digits
)+ # end non-capture group and perform 1+ times
[ ]{,2} # match 0, 1 or 2 spaces
/x # free-spacing regex definition mode

str = "123 aa bb cc 33 dd"

str[r] #=> " aa bb "

请注意,如果不使用自由间距正则表达式定义模式,[ ] 可以替换为空格:

r = /(?: {,2}[^ \d]+)+ {,2}/

关于ruby - 如何编写捕获字符串的第一个非数字部分且不包含 3 个或更多空格的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44209914/

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