это только мой второй вопрос, размещенный на этом сайте, но я много читал этот сайт. В любом случае, мне трудно получить регулярное выражение для соответствия строке в python. То, что я делаю, это получение журнала из SVN и сохранение его в svn_log. Затем я перехожу в цикл for, который читает журнал за строкой и пытается сопоставить его с шаблоном регулярного выражения, однако он всегда возвращается без совпадений. Вот цикл я бег:Проблема с регулярным выражением для соответствия строке в SVN Войти Python
#Scan each line until the changed paths are located.
pattern = re.compile(r"((M|A|D) /.+)")
changed_paths = []
for line in svn_log:
if pattern.match(line):
# Save the changed paths in a list.
changed_paths.append(line)
В моих комментариях говоря, я пытаюсь восстановить измененные пути из журнала SVN. Измененные пути, которые я хочу, начинаются с символа M, A или D. Вот пример журнала, который я использую для тестирования этого скрипта.
r14 | autobuild | 2016-12-27 16:22:21 -0800 (Tue, 27 Dec 2016) | 2 lines
Changed paths:
M /trunk/src/board/ozmo.c
M /trunk/src/ganymede/main.c
Я могу разобрать каждую строку из этого журнала и распечатать его, но когда я пытаюсь соответствовать моему шаблону регулярного выражения с двумя последними строками, я не получаю матчей, и ничто не добавляется к моему changed_paths
переменному. Я пробовал тестировать свое регулярное выражение, используя следующий веб-сайт: http://www.pyregex.com, и он работает там, только не в моем скрипте. Дайте мне знать, если вы видите что-то не так в моем шаблоне регулярного выражения или в цикле. Благодарю.
Это сработало! Я думал, что с помощью '\ s' он будет включать все вхождения пробелов перед набором символов, но мне нужно было включить' \ s * ', чтобы включить все будущие вхождения пробелов перед набором символов. Спасибо! –