固定宽度字段的正则表达式

2023-12-01

我需要将文件布局上的固定宽度字段与正则表达式进行匹配。该字段是数字/整数,始终有四个字符,并且包含在 0..1331 范围内。当数字小于 1000 时,字符串将用左零填充。所以所有这些例子都是有效的:

  • 0000
  • 0001
  • 0010
  • 1000
  • 1331

但必须是以下内容not公认:

  • 1
  • 01
  • 10
  • 100
  • 4759

如果我只能使用正则表达式强制执行此限制,那就太好了。玩了一会后,我产生了这个表情\0*[0-1331]\。问题是它没有将大小限制为四个字符。我当然可以\000[0-9]|00[10-99]|0[100-999]|[1000-1331]\但我拒绝使用如此讨厌的东西。有人能想出更好的方法吗?


正则表达式不是问题的答案every单一问题。我的建议是做类似的事情:

boolean isValidSomethingOrOther (string):
    if string.length() != 4:
        return false
    for each character in string:
        if not character.isNumeric():
            return false
    if string.toInt() > 1331:
        return false
    return true

If you must使用正则表达式,您的解决方案没有任何问题,但我可能会使用以下变体(仅基于我对 RE 引擎及其工作方式的理解):

^0[0-9]{3}|1[0-2][0-9]{2}|13[0-2][0-9]|133[01]$
  • 第一部分匹配 0000-0999。
  • 第二个匹配 1000-1299。
  • 第三场比赛1300-1329。
  • 最后一场比赛是1330和1331。

Update:

仅就优雅注释而言,优雅有多种形式,正则表达式就是其中之一。您还可以通过将验证抽象为单独的函数或宏,然后从代码中调用它来实现优雅:

if isValidSomethingOrOther(str) ...

where SomethingOrOther是一个具体的业务对象。这使您可以轻松地改变对有效对象的想法,甚至可以根据需要使用正则表达式或您认为合适的任何其他检查(例如上面的我的函数)。

这使您可以满足任何变化,例如这些对象现在必须是质数的要求。

我确信我could编写一个“素数小于 1332”正则表达式。我同样确信我不会wantto - 我更喜欢将其编码为函数(或原始速度的查找表),特别是因为正则表达式很可能看起来像:

^2|3|5|7| ... |1327$

anyway.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

固定宽度字段的正则表达式 的相关文章

  • 需要 RegEx 返回第一段或前 n 个单词

    我正在寻找一个正则表达式来返回段落中的前 n 个单词 或者如果该段落包含少于 n 个单词 则返回完整的段落 例如 假设我最多需要前 7 个单词 p one two p
  • 使用 JavaScript 更改 HTML 内的日期格式

    我在页面上有以下代码 span class release date i class fa fa calendar i 2014 11 16 span This 2014 11 16是日期 由我的 CMS 自动生成 我需要更改这个日期 基本
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • 正则表达式将单词的开头和结尾与元音匹配

    我正在尝试以下操作Regex aeiou aeiou 但它不起作用 我测试了 abcda 并且不匹配 它应该只是 aeiou aeiou 额外的 您需要第二个字符是一个文字点 例如 a hello 但由于您的测试用例 abcda 不包含这样
  • 你能挽救我的负面回顾示例来传达数字吗?

    在 高级正则表达式 一章中掌握 Perl http oreilly com catalog 9780596527242 我有一个损坏的示例 我无法找到一个很好的修复方法 这个例子可能为了自己的利益而试图变得太聪明 但也许有人可以帮我解决它
  • [Regex]::Replace() 和 -replace 有什么区别?

    我明白了之间的区别 Replace and replace 但是什么是 replace and Regex Replace 我测试了以下两个代码 但对我来说结果完全相同 我还提到了 PowerShell Cookbook O reilly
  • 删除匹配前的一个单词和一个单词

    匹配之前的一个单词可以是一组任何符号 例如 D E F 我有一个正则表达式 s w s XXX 输入示例 This is KKK M D D xXx PPP输出示例 This is KKK PPP 所以我需要删除 XXX 之前的 1 个单词
  • PHP URL 验证

    我知道有无数的线程问这个问题 但我一直无法找到一个可以帮助我解决这个问题的线程 我基本上试图解析大约 10 000 000 个 URL 的列表 确保它们根据以下标准有效 然后获取根域 URL 此列表包含您能想象到的几乎所有内容 包括类似的内
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • 使用 posix shell 测试字符串中的正则表达式

    如何测试字符串是否与特定字符串匹配正则表达式与基本 无 bash 或任何其他 posix shell 脚本 在 if 语句中 您可以使用expr在 POSIX shell 中计算正则表达式的命令 s Abc expr s alpha 3 e
  • 从正则表达式对象中提取允许字符串的最大长度

    一旦加载到 C 中 是否可以从正则表达式模式中提取允许的字符串的最大长度Regex object 如果我有一个正则表达式字符串定义为 A Z0 9 0 20 我可以使用字符串操作来获取最大允许长度20 但是 有没有一种方法可以更轻松地实现这
  • 从 html 属性中删除单引号和双引号,并且除 href 和 src 之外的所有属性上都没有空格

    我正在尝试从 html 属性中删除单引号和双引号 这些属性是没有空格的单个单词 我写了这个有效的正则表达式 type title data toggle colspan scope role media name rel id class
  • 正则表达式最多匹配五个单词

    我有一个正则表达式 a zA Z 0 9 1 5 它验证该单词包含字母数字字符和少数特殊字符 并且长度不应超过5人物 如何使此正则表达式接受最多五个与上述正则表达式匹配的单词 a zA Z 0 9 1 5 s a zA Z 0 9 1 5
  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 正则表达式获取字符串中的第一个数字和其他字符

    我是正则表达式的新手 想知道如何才能只获取字符串中的第一个数字 例如100 2011 10 20 14 28 55 在这种情况下 我希望它返回100 但该数字也可以更短或更长 我在想类似的事情 0 9 但它单独获取每个数字 100 2001
  • ORA-12728: 正则表达式中的范围无效

    我想检查表中是否插入了有效的电话号码 所以我的触发代码在这里 select start index into mob index from gmarg mobile operators where START INDEX substr ne
  • 如何在 CakePHP 中“验证”人名?

    我有一个 PHP 脚本 应该检查 有效 的人名 但最近破解了带有空格的名称 因此我们向验证器添加了空格 除了这样做之外 有没有办法向 CakePHP 的验证器添加黑名单以阻止所有 无效 字符 而不是允许 有效 字符 注意 我 通常 知道如何
  • Python 中的 grep 等价物是什么?

    假设我有一个文本文件 其中包含 我喜欢大象 这一行 如果我捕获所述文件并将其通过管道发送到 grep大象 我会得到整行 我喜欢大象 如何使用 re 在 Python 中实现此功能 我一直在尝试以下方法 test re search elep
  • 匹配所有有效格式 IPv6 地址的正则表达式

    乍一看 我承认这个问题看起来像是这个问题以及与之相关的任何其他问题的重复 匹配有效 IPv6 地址的正则表达式 https stackoverflow com questions 53497 regular expression that
  • JavaScript 中的实时摩尔斯电码转换器

    在看到谷歌关于莫尔斯电码 gmail 的愚人节笑话后 我想我应该尝试用 javascript 创建一个实时莫尔斯电码转换器 我正在使用正则表达式和替换将莫尔斯电码更改为字符 例如 replace g a replace g r 我遇到的问题

随机推荐

  • Django 嵌套视图

    我正在开发一个内部应用程序 我希望能够嵌套我的视图以保持一切顺利且井井有条 我计划通过将页面的不同部分保留在自己的 HTML 文件中并使用自己的视图 单独的侧边栏和导航栏 单独的图表等 来实现此目的 views py from django
  • SSAS - 未应用格式字符串

    应用格式字符串时遇到问题 在VS2013中运行SSDT并部署到SQL Server 2014 Settings Result Excel 也不显示所选格式 我有什么遗漏的吗 在 technet 上找到的答案 这是因为 SSDT 中使用的新多
  • Asp.Net Core 3 正常关闭抛出OperationCanceledException

    我正在尝试优雅地终止 ASP Net Core 3 1 服务 它将在 Kubernetes 中运行 当 Kubernetes 停止服务时 它会向应用程序发送一个 SIGTERM 事件 此时我希望在终止之前完成正在进行的请求 可能需要几秒钟
  • Linq to sql 将 IQueryable 转换为数据集

    将 IQueryable 对象转换为数据集的最简单方法是什么 模型粉碎机正是您所需要的 如果您有数据上下文并且也不需要模型方面的数据 则 nitzmahone 的解决方案在性能方面表现良好 如果它与您的设置匹配 这对我来说并不清楚
  • iPhone 的 NSBitmapImageRep (或 CGImage 的直接像素访问)?

    有没有一个好的模拟NSBitmapImageRep在 UIKit 中 具体来说 我正在寻找类似的方法setPixel atX y and getPixel atX y 我已经发现thistechnote 它确实让我了解了使用 CGImage
  • IHP 中的重载标签

    Context IHP 指南中有一个部分描述了哈希符号的使用 https ihp digitallyinduced com Guide helpful tips html 它提到以下内容 Writing companyId相当于写作from
  • 如何将我的 css 连接到存储在 WEB-INF 文件夹中的 JSP 文件? Websphere/JSP

    我正在使用 ibm websphere 并创建一个动态网络项目 我的全部JSP文件位于我的 WEB INF 文件夹中 我在我的web xml文件以使它们可访问 到目前为止效果很好 但是我的 CSS 有问题 一如既往 我的CSS文件位于Web
  • %Python 接口的 C++ 库的类型映射

    我想为我的 C 库创建一个 python 包装器 如果 std vector 能够自动转换为 python 列表 反之亦然 那就太酷了 不幸的是 如果我将此代码添加到我的接口文件中 我仍然会在运行时收到错误 typemap in std v
  • 无法关闭正在运行的事件循环。 Discord 机器人创建

    我尝试了一些不同的代码 但它们似乎都给了我同样的错误 import discord client discord Client client run TheBotTokenzzzInQuotes 它给了我这个错误 File
  • 有没有办法用类型变量引用当前类型?

    假设我正在尝试编写一个函数来返回当前类型的实例 有没有办法制作T指的是确切的子类型 所以T应该参考B在班上B class A
  • 在oracle中,如何在搜索字符串时消除区分大小写

    3 如果表中提到的角色是 MANAGER 或 Manager 怎么办 您不能编写三个不同的查询来获取结果 检查指定角色管理器的所有可能值的选项是什么 selecting employee who is not a manager creat
  • 如何在一组数据后自动插入空白行

    我在下面创建了一个示例表 该表与我在 Excel 中的表足够相似 足以说明问题 我想简单地在第 1 列中的每个不同数据后面添加一行 最简单的方法 使用 Excel 谢谢 当前表 column1 column2 column3 A small
  • SMTP:\r\n\r(没有第二个\n)作为双换行符

    我有 SMTP 解析器 大部分工作正常 当接收来自第三方软件的流量时出现问题 该软件发送双换行符为 r n r 没有第二个 n 目前 此类连接被视为不合规 SMTP 而被终止 有人能解释一下 RFC 对于这种 有趣的 双换行符究竟说了什么吗
  • jQuery 动态验证

    你好 我正在尝试使用 jQuery 验证插件做一些事情 但似乎卡在一个地方 这是一些代码
  • 当组件在 jasper 报告中动态不可见时,如何避免组件之间出现空格? [复制]

    这个问题在这里已经有答案了 我这里有大约 11 个 staticText 组件 当我只显示第一个和第八个组件时 我发现它们之间存在巨大差距 每个组件之间没有任何空间 我的假设是组件上的 isRemoveLineWhenBlank true
  • Django Rest Framework 递归嵌套父序列化

    我有一个模型 其中有一个名为 parent 的自引用字段 模型 class Zone BaseModel name models CharField max length 200 parent models ForeignKey self
  • 删除除...(*.BAT)之外的所有文件夹

    我想删除父目录中除 MYFOLDER 之外的所有文件夹 但我无法完成此操作 for i in C Parent do if not i MYFOLDER del f q i 有人可以检查一下代码吗 我使用的是 bat 这应该可以帮助您 fo
  • 如何在使用 HttpClient 获取时阻止 DNS 查找

    我不确定我做得是否正确 下面的方法可以防止DNS lookup when keep alive设置为假 主持人是 tatoeba org 网址是 http 188 213 24 161 eng sentences show 1 这里截图 u
  • 在node.js中的同一端口上绑定HTTP和HTTPS流量?

    我有一个场景 我的 node js 应用程序位于负载平衡 HAProxy 后面 该代理将 HTTP 和 HTTPS 流量转发到我的节点服务器上的端口 8000 不幸的是 这让我陷入了一个棘手的境地 我需要为我的 http 和 https 服
  • 固定宽度字段的正则表达式

    我需要将文件布局上的固定宽度字段与正则表达式进行匹配 该字段是数字 整数 始终有四个字符 并且包含在 0 1331 范围内 当数字小于 1000 时 字符串将用左零填充 所以所有这些例子都是有效的 0000 0001 0010 1000 1