文件名格式的正则表达式

时间:2019-03-16 13:47:04

标签: python regex regex-lookarounds

我正在尝试创建以下字符串的python正则表达式:
ABC--2000-01-10X13-11-44.237Z--572b3b7681572b3b7681572b3b7681572b3b7681

这是我管理的:
^ABC\S\S[0-9A-T\S.]{24}\S\S[a-z0-9]{40}$

问题是python一直抱怨缺少反斜杠或r前缀,我在没有运气的情况下尝试了这两个建议。通过用\S替换-,我设法使它不再反斜杠,所以正则表达式看起来像这样: ^ABC--[0-9A-T-.]{24}--[a-z0-9]{40}$

但是现在它不再匹配了,我认为是因为标点符号.吗?我不确定,希望有人愿意帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

将正则表达式指定为原始字符串( r'...'):

pat = re.compile(r'^ABC\S\S[0-9A-T\S.]{24}\S\S[a-z0-9]{40}$')

否则(在“正常”字符串中)反斜杠必须加倍。

(有效)示例代码:

import re

str = 'ABC--2000-01-10X13-11-44.237Z--572b3b7681572b3b7681572b3b7681572b3b7681'
pat = re.compile(r'^ABC\S\S[0-9A-T\S.]{24}\S\S[a-z0-9]{40}$')
print(pat.match(str).group())

答案 1 :(得分:0)

对于您的 SECOND 正则表达式,实际上它不匹配,因为您使用了return int.Parse(lastInsert.Rows[0][0].ToString()); 之类的字符范围,但是在给定的输入字符串中,您有一个名为 X的字符,所以我认为您需要将现有的正则表达式(例如,[0-9A-T-.]{24}修改为A-T,这样才能与您的字符串完全匹配。

A-Z

REGEX https://regex101.com/r/fsp3FS/24

Python代码:

^ABC--[0-9A-Z-.]{24}--[a-z0-9]{40}$