我需要用正则表达式解析一行,最后两个参数是可选的。我给你举一个例子和我写的表达。你知道吗
结尾处的感叹号和名称是可选的。你知道吗
x = re.compile('(?P<stop_id>\d{9})\s*(?P<admin_one>[[\x00-\x7F]{6}|\s{6}])\s*'
'(?P<service_one>[[\x00-\x7F]{3}|\s{3])\s(?P<line_one>.{8})\s*'
'(?P<direction_one>[[\x00-\x7F]{1}|\s{1}])\s*(?P<admin_two>[[\x00-\x7F]{6}|\s{6}])\s*'
'(?P<service_two>[[\x00-\x7F]{3}|\s{3])\s(?P<line_two>.{8})\s*'
'(?P<direction_two>[[\x00-\x7F]{1}|\s{1}])\s*'
'(?P<interchange_time>[[\x00-\x7F]{3}|\s{3}])'
'(\s+(?P<exclaim>).{1})?(\s+(?P<stop_name>.+))?')
当我搜索下面的字符串时
m = x.search('071124127 00006_ 022 94N 1 00006_ 022 83N * 006 Radhuspladsen')
当我执行m.groups()
时,它会给出以下输出
('071124127', '00006_', '022', '94N ', '1', '00006_', '022', '83N ',
'*', '006', ' R', '', None, None)
我需要exclaim
作为None
和stop_name
作为Radhuspladsen
。
如何为它写regex
??你知道吗
试试看这个。这个将给您
stop_name
。问题是exclaim
正在吞噬spaces
,因此stop_name
无法获得任何空间开始。我将其更改为\s*
,以便它也可以在没有空间的情况下开始。你知道吗请参见演示。你知道吗
http://regex101.com/r/dN8sA5/14
我想问题出在最后一部分!你把问号放在括号外,这样它也能在
\s+
上工作!把它放进去,放在适当的位置,你还必须去掉.{1}
末尾的exclaim
!sp将其更改为:演示:http://regex101.com/r/kA8pE8/1
相关问题 更多 >
编程相关推荐