我试图从使用正则表达式的推文中提取评级。例如下面的推文,我想得到用户评分(9.75)和最高评分(10)。
This is Logan, the Chow who lived. He solemnly swears he's up to lots of good. 9.75/10
我使用了下面的正则表达式,但是捕获组1和2的结果是75和10。我不知道为什么只有在十进制组之后才捕获用户评级。
.*(\d+\.?\d+)\/(\d*\.?\d*)
如果您希望两个数字都有可选的小数,您应该将匹配的1或ore和匹配的0或更多
*
放在正确的位置,在那里它们匹配强制性的前导数字,然后是可选的小数
(\d+\.?\d+)\/(\d*\.?\d*)
具有
(\d+\.?\d*)\/(\d+\.?\d*)
这将匹配至少一个数字,然后可能是一个点,然后可能是更多的数字。
实时链接:https://regex101.com/r/qc5Zwz/1
\b(\d+(?:\.\d+)?)\/(\d+)\b
\b
-期望单词边界(例如,空格,非字母字符)(
-开始捕获评级\d
-整数部分)
-结束'评级'捕获组\/
-期待一个正斜杠(\d)
-捕获最大值\b
-再次期待单词边界const text = 'This is Logan, the Chow who lived. He solemnly swears he\'s up to lots of good. 9.75/10'
const pattern = /\b(\d+(?:\.\d+)?)\/(\d+)\b/
console.log(text.match(pattern))