排除特定长度字符串的正则表达式

问题描述 投票:0回答:2

我对正则表达式很陌生,遇到了一个我无法解决的问题。

我试图在正则表达式中排除特定长度的字符串。

内容如下:

26.6921320 01.2023

我想排除“6921320” -> 它是一个可变字符串,但长度始终为 7 个字符。

我试着这样做:

(?:..(?!(\d.))[.\d])

输出将是:

Match 1: 26.
Match 2: 01.
Match 3: 023

没有按预期工作,因为我只是在有限的知识下碰运气。

感谢任何解释方面的帮助。

regex regex-lookarounds
2个回答
0
投票

您可以尝试如下:

^([\d]{2})\.[\d]+\s([\d]{2})\.([\d]+)$
.

([\d]{2})
将匹配第一个数字。
^\.[\d]+\s
将匹配点和 sspace 之前的其余数字。
([\d]{2})
将匹配第二个点之后的下两个数字,
([\d]+)
将匹配所有最后的数字。
()
包含的模式将是您首选编程语言中指定为“匹配项”的模式。

Edit:阅读编辑后的问题(在匹配中添加点)正则表达式应如下所示:

^([\d]{2}\.)[\d]+\s([\d]{2}\.)([\d]+)$
.

希望有帮助。


0
投票

要仅匹配给定的示例,您可以使用带有单词边界的交替。

由于交替,模式匹配不同的部分,因为您不能仅在单个匹配中跳过匹配。

\b(?:\d\d\.|\d{4})\b

说明

  • \b
    防止部分单词匹配的单词边界
  • (?:
    备选方案的非捕获组
    • \d\d\.
      匹配2个数字和
      .
    • |
    • \d{4}
      匹配4位数字
  • )
    关闭非捕获组
  • \b
    单词边界

查看正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.