我有一个字符串,
x = '4x4 @ 32" hjy w/ R43 potter'
x = '4x4 @ 32" hjy w/ R4 26 potter'
x = 'Restful4 4 @ 32" hjy R8 26 potter'
我需要得到前面有R
的数字,即从第一个数字中得到43
,从第二个数字中得到4
,从第三个数字中得到8
。
一个R是有保证的。
我可以使用index('R')
得到它,但这是痛苦的照顾所有的情况。
我试过匹配,但似乎不工作。任何想法?
我试过这个:
sFind = x.match /(?<name>R \d+) /
debug=debug+sFind[:name].to_s + "\n"
型
调试出错
2条答案
按热度按时间7xllpg7q1#
您几乎已经完成了,只需删除
R
和\d+
之间的空格即可:字符串
还有
String#[]
可以立即提取捕获组:型
仅获取数字:
型
或者通过不使用命名捕获来缩短:
型
您也可以使用所谓的 positive lookbehind Assert来匹配前面有
R
的数字,而不包括R
:型
ie3xauqp2#
使用扫描方法
字符串
如果有多个R后面跟着这样的数字,则删除
.first
型
输出
型