С учетом ввода:
line = " say hi /* comment"
и регулярного выражения:
regex = re.compile(r'\s*(?P<command>.*?)/[/*]')
result = regex.search(line)
print(result.group('command'))
Это успешно выведет say hi
.
Однако переключение последней части нанеобязательная группа:
regex = re.compile(r'\s*(?P<command>.*?)(/[/*])?')
теперь ничего не печатает.Это не регулярное выражение не соответствует ему вообще, потому что result
не None
.
Почему это работает, когда регулярное выражение не является необязательным, но перестает работать, когда оно необязательно,и как бы я решил это?