我需要从字符串中提取数字值,例如“17,000英镑 - 35,000英镑,取决于经验”
([0-9]+k?[.,]?[0-9]+)
该字符串只是一个示例,我可以17k
17.000
17
17,000
,在每个字符串中可以有0,1或2个数字(不超过2),它们可以在字符串中的任何地方,由其他任何东西分开。我只需要提取它们,把第一个提取到一个地方,把第二个提取到另一个地方。
我可以想出这个,但它在k?[,.]
分组中给了我两个匹配(不介意$1
,这是正确的)。我需要17,000
中的$1
和35,000
中的$2
,我该如何做到这一点?我也可以设法使用2个不同的正则表达式
答案 0 :(得分:1)
使用正则表达式
使用每个开始圆括号,您可以创建一个新的捕获组。因此,要拥有第二个捕获组$2
,您需要将第二个数字与括号内的正则表达式的另一部分相匹配,当然您需要匹配数字之间的部分。
([0-9]+k?[.,]?[0-9]+)\s*-\s*.*?([0-9]+k?[.,]?[0-9]+)
但可能是Solr具有将所有匹配放入数组的正则表达式函数,这可能更容易使用。
答案 1 :(得分:0)
将整个美元区间与2个捕获组匹配,而不是将每个美元金额与一个捕获组匹配:
([0-9]+k?[.,]?[0-9]+) - ([0-9]+k?[.,]?[0-9]+)
然而,我很担心(是的,我在意它:p)关于那个正则表达式,因为它会匹配一些奇怪的东西:
182k,938 - 29.233333
将匹配,如果您可以提供有关输入类型的更多信息,它肯定可以改进。
答案 2 :(得分:0)
的内容如何?
[£]?([0-9]+k?[.,]?[0-9]+) - [£]([0-9]+k?[.,]?[0-9]+)
现在应该给你两组。
编辑:可能还需要清理空格