python3.x正则表达式将第一个字符砍掉

时间:2018-06-21 15:12:30

标签: regex python-3.x

不知道我的正则表达式有什么问题,或者为什么要砍掉第一个字符。正则表达式正确地标识了我要分割的内容,但是为什么数组的每个元素中缺少第一个字符?

>>> f = "value: http://ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com:user-services-http/ssoeproxy/logout    value: http://ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com:user-services-http-two/ssoeproxy/logout    value: user-services-http #458930               value: user-services-http-two #458930"
>>> re.split(r'[a-z0-9]([-a-z0-9]*[a-z0-9])?', f)
>>> ['', 'alue', ': ', 'ttp', '://', 'c2-xxx-xxx-xxx-xxx', '.', 'ompute-1', '.', 'mazonaws', '.', 'om', ':', 'ser-services-http', '/', 'soeproxy', '/', 'ogout', '    ', 'alue', ': ', 'ttp', '://', 'c2-xxx-xxx-xxx-xxx', '.', 'ompute-1', '.', 'mazonaws', '.', 'om', ':', 'ser-services-http-two', '/', 'soeproxy', '/', 'ogout', '    ', 'alue', ': ', 'ser-services-http', ' #', '58930', '               ', 'alue', ': ', 'ser-services-http-two', ' #', '58930', '']

1 个答案:

答案 0 :(得分:1)

这里对您的问题的更详细的解释是,如果仅指定一个捕获组,则$startDate = date_timestamp_get($calendar->started_at); $date = date('Y-m-d H:i:s', strtotime('+1 day', $startDate)); $calendar->update(['started_at' => $date]); 会分割为要捕获的任何组。它不会在您的整个正则表达式上分裂。在这种情况下,您将捕获除首字母之外的所有内容。 split()在括号内。移动括号以包括这部分,您就很好了。