字母P后跟空格或“ - ”符号。 然后直接跟随一个从1到150的数字。 只允许使用完整的数字。不允许像01或023那样重要的零。 然后直接跟着一个点。然后直接跟随A的6个字符,直到和Z 开头的P和最后的6个字符可以是小写的大写字母。
我的范围在1到150之间我做错了...任何人都可以帮助我吗?
这就是我得到的
(?i)p[ -]([1-9]|[1-9][0-9]|1{0,1}[0-5][0-9])[\.][a-z]{6}
正则表达式也会找到这个:
p 01.SLKDOZ
我不希望这样......
答案 0 :(得分:2)
删除1之后的{0,1}
(100之1):(?i)p[ -]([1-9]|[1-9][0-9]|1[0-5][0-9])\.[a-z]{6}
1{0,1}
匹配1 0或1次,如果1不匹配,则可以匹配以下0。
答案 1 :(得分:1)
reg.txt
p 1.SLKDOZ
P 150.ABCDEF
P 151.ABCDEF
P 150.ABCDEFG
P 090.ABCDEF
P 005.ABCDEF
P 05.ABCDEF
Perl regx
$ cat reg.txt | perl -nle "chomp($_); print if (/^[pP][- ]([1-9]|[1-9][0-9]|1[0-4][0-9]|150)\.[a-zA-Z]{6}$/g );"
输出是:
p 1.SLKDOZ
P 150.ABCDEF