搜索大型syslog仓库并需要获取特定单词以匹配特定条件。我正在使用正则表达式来编译搜索这个单词。我已经阅读了关于正则表达式字符的python文档,我理解如何单独指定每个条件,但不知何故错过了如何将所有标准连接在一起以进行特定搜索。这是我到目前为止但没有工作......
p = re.compile("^'[A-Z]\w+'$")
match = re.search(p, syslogline, )
这个词是一个可以是alphanum的用户名,总是以大写字母开头(以空格开头),可以包含字符或nums,长度为3-12,以单引号结尾。
一个例子是:Epresley01'
或J98473'
根据您的要求(也在下面说明),您的正则表达式不起作用,因为:
^'
断言该行开头的位置,并确保'
是该行的第一个字符。$
断言该行末尾的位置。说过你指定它前面有一个空格字符(在你的模式中不存在)。您的模式还会检查
'
,它不是用户名的第一个字符。鉴于您实际上没有给我们提供您的文件样本,我无法确认或否认您的字符串在用户名之前开始并在其之后结束,但如果不是这样,主播^$
也没有帮助您。
以下要求只是从OP的问题(重写)中复制,以概述用户名格式。用户名:
字符。chars
或nums。我在这里假设chars
实际上是指字母,用户名中的所有字母(包括大写的起始字符)都是ASCII。'
。(?<= )[A-Z][^\W_]{2,11}'
(?<= )
积极的外观确保前面是空间
角色[A-Z]
匹配任何大写的ASCII字母[^\W_]{2,11}
匹配任何单词字符,除了下划线_
(相当于a-zA-Z0-9
)
这看起来有点令人困惑,因为它实际上是一个双重否定。这是说匹配集合中没有的东西。 \W
匹配任何非单词字符。因为这是一个双重否定,就像说
别
比赛
非
字符。将_
添加到集合中会使其无效。'
字面意思匹配撇号字符'
我想你可以这样做:
(在@ctwheels评论后更新)
[A-Z][a-zA-Z0-9]{1,10}'
说明
[A-Z]
[a-zA-Z0-9]+
'