我对正则表达式还很陌生,遇到了一个我无法理解的问题。我试图在正则表达式中排除一个特定长度的字符串。具体如下:
26.6921320 01.2023
我想排除“6921320”-〉它是一个变量字符串,但总是有一个长度为7个字符。我试着这样做:
(?:..(?!(\d.))[.\d])
产出将是:
Match 1: 26. Match 2: 01. Match 3: 023
不像预期的那样工作,因为我只是用有限的知识试了试运气。我很感激任何解释的帮助。
xoefb8l81#
您可以尝试如下操作:^([\d]{2})\.[\d]+\s([\d]{2})\.([\d]+)$ .([\d]{2})将匹配第一个到数字。^\.[\d]+\s将匹配点和空格之前的其余数字。([\d]{2})将匹配第二个点之后的下两位数字,([\d]+)将匹配所有最后的数字。()所包含的模式将是您首选编程语言中指定为“匹配”的模式。
^([\d]{2})\.[\d]+\s([\d]{2})\.([\d]+)$
([\d]{2})
^\.[\d]+\s
([\d]+)
()
编辑:阅读编辑后的问题(在匹配项上加点),正则表达式应如下:^([\d]{2}\.)[\d]+\s([\d]{2}\.)([\d]+)$。
^([\d]{2}\.)[\d]+\s([\d]{2}\.)([\d]+)$
希望能帮上忙。
lpwwtiir2#
要仅为给定的示例获取匹配项,可以使用带有单词边界的替换项。由于交替,模式匹配单独的部分,因为您不能仅在单个匹配中跳过匹配。
\b(?:\d\d\.|\d{4})\b
说明
\b
(?:
\d\d\.
.
|
\d{4}
)
请参见regex demo。
2条答案
按热度按时间xoefb8l81#
您可以尝试如下操作:
^([\d]{2})\.[\d]+\s([\d]{2})\.([\d]+)$
.([\d]{2})
将匹配第一个到数字。^\.[\d]+\s
将匹配点和空格之前的其余数字。([\d]{2})
将匹配第二个点之后的下两位数字,([\d]+)
将匹配所有最后的数字。()
所包含的模式将是您首选编程语言中指定为“匹配”的模式。编辑:阅读编辑后的问题(在匹配项上加点),正则表达式应如下:
^([\d]{2}\.)[\d]+\s([\d]{2}\.)([\d]+)$
。希望能帮上忙。
lpwwtiir2#
要仅为给定的示例获取匹配项,可以使用带有单词边界的替换项。
由于交替,模式匹配单独的部分,因为您不能仅在单个匹配中跳过匹配。
说明
\b
防止部分字匹配的字边界(?:
备选方案的非捕获组\d\d\.
匹配2位数字和.
|
或\d{4}
匹配4位数字)
关闭非捕获组\b
A字边界请参见regex demo。