晚上好,
我试图同时使用多个角色类别但没有成功。给定一个包含 HTTP 流量 URI 的列,我希望 REGEX 能够识别 URI 字段包含长度为 6-10 个字符的文本字符串(其中包含数字)的行和小写字母...每个至少一个,但不是大写字母。
此搜索不会局限于特定字符或字符串的一部分...
测试字符串:
aasd4567
9f7g6s5df
0hjksdf73
123456789
12345/1234a
Wordswords
W0rdsW4rds
aasd4/567af
9f7g6s5dfasdf
0hjks/asdf
12345/1234asd
Wordswords12
W0rdsW4rds12312312
我希望我可以使用一些带括号的布尔值,即:
awk --re-interval '$1 ~ /([0-9]+&[a-z]+){6,10}/'
但这是行不通的。显然,将它们结合起来也行不通,因为
awk --re-interval '$1 ~ /[a-z0-9]{6,10}/'
仍然返回不带任何数字和任何小写字母的字符串。
我什至试图找到结合 [[:lower:]] 和 [[:digit:]] 的方法,但遇到了与上面第一个示例相同的问题。
我确信这是一个超级简单的修复,我错过了什么?我不反对使用 gawk/grep/sed/etc,无论是完成此任务最有效的工具。
谢谢
答案1
如果我正确理解你的问题,你可以使用match
first, thenRSTART
和RLENGTH
来提取匹配的字符串,然后检查它是否存在数字和字符,因此:
awk --re-interval '{match($1, /[[:lower:][:digit:]]{6,10}/);
x=substr($1, RSTART, RLENGTH)}; x ~ /[[:lower:]]/ && x ~ /[[:digit:]]/' test_strings
给定您的测试字符串,这会产生:
aasd4567
9f7g6s5df
0hjksdf73
9f7g6s5dfasdf
12345/1234asd
Wordswords12
W0rdsW4rds12312312