【发布时间】:2022-11-03 17:44:42
【问题描述】:
基本上我正在尝试实现如下指定的三个正则表达式 -
-
第一个正则表达式应至少匹配文字字符串 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 等。 -
第二个正则表达式应该匹配高于字符串文字 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+)(.*) -
第三个正则表达式应该匹配任何低于字符串文字 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.1、10.1.0等。另外请注意,您可能需要几个不同的选项来匹配您的某些要求,例如10\.(1\d+|[2-9]\d*)应匹配10.2、10.10等,但不匹配10.1。 -
第一个正则表达式还应该匹配 10.2 或 11.0 或 11.1.1.0 或 12.0 或 12.1.0.1 等等以及字符串 10.1
-
当然,只需相应地构建表达式。我只是提供了一些提示,假设目前 10.1 将是“转折点”,但最终可能会改变 - 所以我试图帮助你学习如何自己编写这些表达式:)
-
首先使用正则表达式将输入字符串解析为
ints 的数组,然后使用整数算术检查其他约束不是更简单吗?