【问题标题】:Java regular expression to match specific integer values separated by a dot delimiter用于匹配由点分隔符分隔的特定整数值的 Java 正则表达式
【发布时间】:2022-11-03 17:44:42
【问题描述】:

基本上我正在尝试实现如下指定的三个正则表达式 -

  1. 第一个正则表达式应至少匹配文字字符串 10.1 或任何字符串,如 10.1.0.0 或 10.1.1.0 或 10.2.1.0 或 10.2.1.1 等,但它至少应匹配 10.1 或任何更高版本。我尝试了以下正则表达式 \d+\.\d+(\.\d+\.\d+)* 但这匹配更低的版本,例如 9.1.1.0 或 9.1 等。

  2. 第二个正则表达式应该匹配高于字符串文字 10.1 但不匹配 10.1 但它应该匹配任何其他字符串,如 10.2 或 10.3 或 10.1.0.0 或 10.1.1.0 或 10.2.1.0 或 10.2.1.1 或 10.2 或 10.3 或 11.1.1.0或 11.1 等等。尝试了以下但不符合预期(\\d+)\\.(\\d+)(.*)

  3. 第三个正则表达式应该匹配任何低于字符串文字 10.1 但不匹配 10.1 但它应该匹配任何其他字符串,如 10.0 或 9.1 或 9.2 或 9.1.1.0 或 9.1 或 9.1.2.0。

    基本上,我如何匹配像 10.1 这样的文字字符串,后跟由点分隔的任何可选数字,以及如何匹配高于或低于我的第 1、2 和 3 点中的文字字符串的任何内容?

    我仍在尝试修改我的正则表达式以符合我的要求,任何帮助/指导都会非常有帮助。

【问题讨论】:

  • 如果您想匹配文字,只需将它们放入您的正则表达式中,例如10\.1(\.\d+)* 应该匹配 10.110.1.0 等。另外请注意,您可能需要几个不同的选项来匹配您的某些要求,例如10\.(1\d+|[2-9]\d*) 应匹配 10.210.10 等,但不匹配 10.1
  • 第一个正则表达式还应该匹配 10.2 或 11.0 或 11.1.1.0 或 12.0 或 12.1.0.1 等等以及字符串 10.1
  • 当然,只需相应地构建表达式。我只是提供了一些提示,假设目前 10.1 将是“转折点”,但最终可能会改变 - 所以我试图帮助你学习如何自己编写这些表达式:)
  • 首先使用正则表达式将输入字符串解析为ints 的数组,然后使用整数算术检查其他约束不是更简单吗?

标签: java regex


【解决方案1】:

请测试并让我知道它们是如何工作的。 您可以在https://regex101.com/ 轻松测试

您应该将值包含到您的正则表达式中。

  1. ((10.[^0][d.]*)|(1[^0].[d.]*)) Have a look at the pic

    当我弄清楚它们时,我会包括更多

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多