使用正则表达式从整数范围内的字符串返回整数

时间:2016-07-25 01:29:17

标签: regex

我正在尝试从字符串中的“hpercent =”中捕获最后一个数字,但前提是它落在1-25的范围内。

示例字符串:

  • ipercent = 11 | hpercent = 10
  • ipercent = 21 | hpercent = 25
  • ipercent = 10 | hpercent = 42
  • ipercent = 2 | hpercent = 2
  • ipercent = 15 | hpercent = 80
  • ipercent = 56 | hpercent = 89

“hpercent”所需的输出: 10,25,2

我试过了:

  • 获取最后一位数字:[^ =] +(?= $)

  • 我的范围仅限数字1-25:^ [1-9] $ | ^ 1 [0-9] $ | ^ 2 ^ 0 [0-5] $

只是不确定如何将上述正则表达式放在一个表达式中

更新:

抱歉,这是非常新的。但我想我需要将最后一个数字作为一组捕获。但正如你可以看到它捕获最后一个数字时它超过了25。

  • 这可以捕获所有内容,但也包含26中的6:[1-9] $ | ^ 1 [0-9] $ | ^ 2 [0-5] $
  • 这可以捕获所有内容但不是单个数字:^ [1-9] $ | 1 [0-9] $ | 2 [0-5] $

我应该只在1-25之间捕获。

Adobe Classifications

3 个答案:

答案 0 :(得分:1)

这应该有效hpercent=([1-9]|1[0-9]|2[0-5])(?![0-9])

扩展

 hpercent=
 ( [1-9] | 1 [0-9] | 2 [0-5] )  # (1)
 (?! [0-9] )

由数字范围正则表达式生成器 tool

简化

答案 1 :(得分:0)

由于您没有说明您正在使用的正则表达式风格或编程语言,因此使用vim解决方案:

/\v\=(\d|1\d|2[0-5])$/

正在进行什么

  • 仅捕获=EOL之间的内容($
  • 然后捕获:
    • 1到9之间的单个数字,
    • a 1后跟任意数字(所以10到19),
    • a 2后跟0到5之间的任何东西(所以20到25之间的任何东西)

将它转换为你的正则表达式应该很容易。

答案 2 :(得分:0)

将你的正则表达式放在一个表达式中:

/([1-9]|1[0-9]|2[0-5])(?=$)/