В Python 2.7.5,Регулярное выражение не совпадает, как и ожидалось
r = re.search(r'((a+)\2b)*\1', 'abaabaab')
приведет r.group(0)
быть 'aabaab'
, но я ожидаю, что это совпадает с пустой строкой в начале 'abaabaab'
. Я думаю, что это не соответствует правилу первого матча.
И я ожидаю
r = re.search(r'(c+)*\1', 'ca')
матч с 'c'
, где первая группа захватывает 'c'
и повторяющей нулевое время и таким образом '\1'
матчи 'c'
. То, что я получил под python, - 'NoneType'
, а osx grep возвращает 1. echo c | grep -E '(c+)*\1' ; echo $?
.
Может ли кто-нибудь сказать мне, почему?
Вы неверно истолковываете код возврата grep, 1 означает «нет совпадений». – georg
@georg, я знаю, что означает код возврата. Я ожидаю, что он вернет 0 с совпадением. – coderfive
'echo cc | grep -E '(c +) * \ 1'' – Cyrus