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

nr9pn0ug  于 2023-04-13  发布在  其他
关注(0)|答案(2)|浏览(219)

我对正则表达式还很陌生,遇到了一个我无法理解的问题。
我试图在正则表达式中排除一个特定长度的字符串。
具体如下:

26.6921320 01.2023

我想排除“6921320”-〉它是一个变量字符串,但总是有一个长度为7个字符。
我试着这样做:

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

产出将是:

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

不像预期的那样工作,因为我只是用有限的知识试了试运气。
我很感激任何解释的帮助。

xoefb8l8

xoefb8l81#

您可以尝试如下操作:^([\d]{2})\.[\d]+\s([\d]{2})\.([\d]+)$ .
([\d]{2})将匹配第一个到数字。^\.[\d]+\s将匹配点和空格之前的其余数字。([\d]{2})将匹配第二个点之后的下两位数字,([\d]+)将匹配所有最后的数字。()所包含的模式将是您首选编程语言中指定为“匹配”的模式。

编辑:阅读编辑后的问题(在匹配项上加点),正则表达式应如下:^([\d]{2}\.)[\d]+\s([\d]{2}\.)([\d]+)$

希望能帮上忙。

lpwwtiir

lpwwtiir2#

要仅为给定的示例获取匹配项,可以使用带有单词边界的替换项。
由于交替,模式匹配单独的部分,因为您不能仅在单个匹配中跳过匹配。

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

说明

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

请参见regex demo

相关问题