搜索大型系统日志仓库并需要获取特定字词以匹配特定条件。 我正在使用正则表达式来编译搜索这个单词。我已经阅读了关于正则表达式字符的python文档,我理解如何单独指定每个条件,但不知何故错过了如何为我的特定搜索连接在一起。这是我到目前为止但没有工作......
p = re.compile("^'[A-Z]\w+'$")
match = re.search(p, syslogline, )
这个词是一个可以是alphanum的用户名,总是以大写字母开头(以空格开头),可以包含字符或nums,长度为3-12,以单引号结尾。
示例包括:Epresley01'
或J98473'
答案 0 :(得分:1)
根据您的要求(也在下面说明),您的正则表达式不起作用,因为:
^'
断言该行开头的位置,并确保'
是该行的第一个字符。$
断言该行末尾的位置。已经说过你指定它前面有一个空格字符(你的模式中没有)。您的模式还会检查
'
,它不是用户名的第一个字符。鉴于您实际上没有向我们提供您的文件样本,我无法确认或否认您的字符串在用户名之前开始并在其之后结束,但如果不是这样,锚点^$
也没有帮助你在这里。
以下要求仅从OP的问题(重写)中复制,以概述用户名格式。用户名:
字符。chars
或nums。我在这里假设chars
实际上是指字母,用户名中的所有字母(包括大写的起始字符)都是ASCII。'
结尾。(?<= )[A-Z][^\W_]{2,11}'
(?<= )
确保前面有空格
字符[A-Z]
匹配任何大写的ASCII字母[^\W_]{2,11}
匹配除下划线_
以外的任何单词字符(相当于a-zA-Z0-9
)
\W
匹配任何非单词字符。因为它是双重否定,所以就像说_
会使其无效。'
按字面意思匹配撇号字符'
答案 1 :(得分:0)
我认为你可以这样做:
(在@ctwheels评论后更新)
pipeline {
agent { docker 'maven:3.3.3' }
stages {
stage('build') {
steps { sh 'mvn --version' }
}
}
<强>解释强>
[A-Z][a-zA-Z0-9]{1,10}'
[A-Z]
[a-zA-Z0-9]+