首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >十六进制数的正则范围

十六进制数的正则范围
EN

Stack Overflow用户
提问于 2017-06-15 07:30:53
回答 2查看 1.2K关注 0票数 0

在我正在编写的程序中,我需要检查十六进制中的某个数字是否在给定的范围内。

我把这一切都弄明白了,除了一个我一直坚持的问题:

假设我收到以下范围:52-71

我需要检查给定的号码是否在这个范围内,例如:6e

我如何编写支持这个功能的regex表达式?

编写一个regex表达式来检测50-7f很容易,因为每个数字都可以在其中生成-> 5-7

问题是范围不能简化,因为它必须除6e、53、71之外,但拒绝51,72 -有一种聪明的方法可以从前面提到的表达式中排除范围50-5172-7f

5-7

非常感谢,顺便说一句,我正在和python一起工作。

EN

回答 2

Stack Overflow用户

发布于 2017-06-15 07:44:19

一种方法是划分感兴趣的范围,从与所述分区匹配的regexen构建交互。

寻址示例范围( 52-71 ):

代码语言:javascript
运行
复制
(5[2-9a-f]|6[0-9a-f]|7[01])

使用正则表达式引擎不区分大小写的匹配。如果不可用,请将修改大写范围添加到字符类中。

票数 1
EN

Stack Overflow用户

发布于 2017-06-15 07:48:25

将字符串(因为您正在使用regex )转换为int并使用普通int运算符进行计算会更简单。

对此作业使用regex只会使一切变得更加复杂,因为它们匹配模式,没有价值概念。如果您坚持这样做,这应该可以完成任务(但是请记住,您排除的每一个范围都会使它变得更加复杂!):

代码语言:javascript
运行
复制
5[2-9a-fA-F]|6[0-9a-fA-F]|7[0-1]

您可以在测试用例和解释这里中看到它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44561342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档