2015-10-19 633 views
1

我想匹配冒号后的温度范围:如何使用正则表达式来匹配以数字开头和结尾)的句子

Temperature Range: 44 F to 64 F/7 C to 18 C (upper) and 51 F to 64 F/11 C to 18 C (lower) 

所以,这个值的格式是这个字符串总是出现在冒号后面,以数字开头,并以右括号“)”结尾。有没有办法让我在正则表达式中匹配?

我都试过,但它不工作:

Temperature Range:\s*(^\d*.*\)$) 

所以它开始与\ d和结尾)。

我可以知道有什么问题吗?

P.S.,我没有用任何编程语言编写正则表达式。我只是在网页抓取工具中编写正则表达式。

谢谢!

+1

的''^导致非比赛。你把它放在那里的意图是什么?把它放在最开始,你应该得到一场比赛。 – JRD

+0

但我只想冒号后面的数值(我不想要“温度范围”),这就是为什么我在\ s *后面加上palenthesis的原因。所以^来之后(。对吗?) – Grinsummer

+0

'^'是一个锚标记,并且匹配在一个字符串的开始处,如果你把它放在除了开头的任何地方,你就不会得到你的匹配。捕获内容,并将它们放在正确的位置,你可以在这里放置它,https://regex101.com/r/hJ2hV4/1 – JRD

回答

0

这里有一个更新的正则表达式应该为你工作:

Temperature Range:\s*(\d+.*\))$ 
        ^^ 

regex demo

^是启动的串一个锚在您的正则表达式,它会导致正则表达式失败与您的输入字符串匹配。此外,由于在可选空白(\s*)之后必须有数字,因此我建议将+1次或多次出现)量词应用于\d

如果字符串可以与任何东西,而不仅仅是“温度范围”开始,你可以用懒点匹配.*?取代:

^.*?:\s*(\d+.*\))$ 
^^^ 

another demo

相关问题