正则表达式从字符串列表

时间:2015-12-28 11:39:26

标签: python regex

我有一个字符串列表,如:

  

input_list = ['1。公司','2.A。工作报告','3.1A。 info','4杰克和吉尔','4.1利润','11亏损','5。 2014年作品','A。考虑]

我希望只搜索列表项的起点,以便我得到以下输出:

  

1
  2.A
  3.1A
  4
  4.1
  11个
  5
  一个

我尝试了以下代码:

input_list =['1 . company','2.A . work report','3.1A . info','4 Jack and Jill','4.1 profit','11 loss','5 . 2014 works','A . considerations']
for item in input_list:
   num_search = re.search(r'^\w+(\W)?(\w+)?\s',item)      
   num = num_search.group()
   print num

代码输出如下:

  

1
  2.A
  3.1A
  4杰克
  4.1
  11个
  5
  一个

上述输出中的问题是 4 Jack 。我只想 4

我认为我必须为此目的使用不同的正则表达式。

如何才能使广义正则表达式仅匹配所有点?

3 个答案:

答案 0 :(得分:2)

详细说明@MatsLindh指出的内容,split按空格并获取第一项:

>>> for item in input_list:
...     print(item.split(" ", 1)[0])
... 
1
2.A
3.1A
4
4.1
11
5
A

答案 1 :(得分:1)

如果你想用正则表达式做,你可以在(嵌套)列表理解中使用它们:

[m.group(0) for m in filter(None, [re.match(r'^([\d.A-Z]+)', i) for i in input_list])]

结果:

['1', '2.A', '3.1A', '4', '4.1', '11', '5', 'A']

答案 2 :(得分:0)

正确的正则表达式可能是

import re
input_list =['1 . company','2.A . work report','3.1A . info','4 Jack and Jill','4.1 profit','11 loss','5 . 2014 works','A . considerations']
for item in input_list:     
   num_search = re.search(r'^(\S+)',item) 
   if num_search:
     num = num_search.group()
   print num