这里我有几个不同的工资字符串:
"U3 000 Per Month"
"U10 000 - U12 000 Per Month"
"U12 000 Per Month"
"U125 000 - U130 000 Per Month"
"U130 000 Per Month"
我正在尝试使用以下逻辑构建正则表达式:
仅匹配第一个 U 字母之后的第一个 1,2 或 3 位数字,然后匹配第一个之后的单个空格之后的零强> 1,2 或 3 位数字组。字符串的其余部分并不重要。例如,我们有几个字符串:
"U20 000 - U30 000 Per Month"
"U3 000 Per Month"
"U125 000 - U130 000 Per Month"
我想要一个正则表达式返回
20000, 3000, 125000
请帮忙,我已经厌倦了挖掘正则表达式文档
最佳答案
您可以尝试使用 (?<=^U)\d{1,3}\s0* .
regex = /(?<=^U)\d{1,3}\s0*/
p 'U20 000 - U30 000 Per Month'.scan(regex).first.sub(/\s/, '') # "20000"
p 'U3 000 Per Month'.scan(regex).first.sub(/\s/, '') # "3000"
p 'U125 000 - U130 000 Per Month'.scan(regex).first.sub(/\s/, '') # "125000"
我认为 \s
之后只包含零,因此您添加 \d{1,3}
会更合适。
关于ruby-on-rails - 正则表达式匹配从字符串中获取正确数字的简单逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753450/