我将此行作为字符串:
'10 NGBSDN60AQ\n Adafazef ajlafea jhaze 20 SSB 30BA\nqdfqd 40 ON 300 30\n'
我的正则表达式为r'[0-9]{2,3}[\s]+[A-Z0-9\s]{6,12}\\n{1}'
它标识:
但是我不想要最后一个,40 ON 300 30\n
我想知道如何获得正则表达式的第二部分 长度介于6到12个字符(数字或字母)之间的字符串,只能包含一个空格。
答案 0 :(得分:1)
我建议您采用以下解决方案。 它不仅仅使用正则表达式来为您提供正确的结果,但它确实可以做到:
import re
s = '10 NGBSDN60AQ\n Adafazef ajlafea jhaze 20 SSB 30BA\nqdfqd 40 ON 300 30\n'
my_regex = r'[0-9]{2,3}[\s]+[A-Z0-9\s]{6,12}\n{1}'
pattern = re.compile(my_regex)
result = pattern.findall(s)
result = [i for i in result if len(i.split()) < 4]
print(result) # ['10 NGBSDN60AQ\n', '20 SSB 30BA\n']
答案 1 :(得分:0)
如果您需要正则表达式解决方案,则可以尝试以下操作:
^[0-9]{2,3}[\s]+(?!=.* .* )(?=.{6,12}$)\w+(?: \w+)?$
说明:
^ # begin of line
[0-9]{2,3}
[\s]+
(?!=.* .* ) # following text must not contain 2 spaces
(?=.{6,12}$) # following text must be 6 to 12 chars long
\w+(?: \w+)? # WORD and optional (space + WORD)
$