字符串的正则表达式,允许一个空格

时间:2018-09-17 10:04:39

标签: python regex whitespace

我将此行作为字符串:

'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}'

它标识:

  • 10 NGBSDN60AQ \ n
  • 20 SSB 30BA \ n
  • 40开300 30 \ n

但是我不想要最后一个,40 ON 300 30\n

我想知道如何获得正则表达式的第二部分 长度介于6到12个字符(数字或字母)之间的字符串,只能包含一个空格。

2 个答案:

答案 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+)?$

Demo

说明

^                   # 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)
$