gpt4 book ai didi

python - Python中可选字段的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:47 25 4
gpt4 key购买 nike

我需要用正则表达式解析一行,最后两个参数是可选的。我给你一个例子和我写的表达。

exclaim 和 name 是可选的。

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 作为 Nonestop_name 作为 Radhuspladsen。如何为它编写正则表达式??

最佳答案

(?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)))?(?:\s*(?P<stop_name>.+))?

试试这个。这会给你 stop_name。问题是 exclaim 正在吃掉 spaces 所以 stop_name 无法获得任何开始的空间。我将其更改为 \s* 以便它也可以在没有空间的情况下开始。

查看演示。

http://regex101.com/r/dN8sA5/14

关于python - Python中可选字段的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26094045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com