Регулярное выражение Python - ограниченное слово

Вы одновременно отметили свой вопрос [C] и [C ++]. Результаты будут согласованы между языками, но структура ответа различна для каждого из этих языков.

На языке C ваши примеры не имеют никакого отношения к bool вообще (что относится к C99 as Что ж). В языке C реляционные операторы не дают результатов bool. И 4 > 5, и 4 < 5 являются выражениями, которые дают результаты типа int со значениями 0 или 1. Таким образом, в ваших примерах нет никакого преобразования «bool to int» в ваших примерах в C.

. В C ++ реляционные операторы действительно дают результаты bool. Значения bool конвертируются в тип int, при этом true преобразуется в 1 и false преобразование в 0. Это гарантируется языком.

P.S. Язык C также имеет выделенный логический тип _Bool (с макроснимками как bool), а его интегральные правила преобразования по существу те же, что и в C ++. Но тем не менее это не относится к вашим конкретным примерам в C. Еще раз, реляционные операторы в C всегда вызывают результаты int (not bool) независимо от версии спецификации языка.

0
задан linksse 18 March 2019 в 16:56
поделиться

2 ответа

Тебе не хватает пропусков. После символа #, до < и после >.

Таким образом, можно добавить недостающие совпадения пробелов:

>>> m = re.match(r"\s*\#?\s*\w*\s*(\<)+\s*(?P<method>\w+)\s*(\>)+\s*\w*", "# This <foo> truc")
>>> m.group('method')
'foo'

Однако, если вам нужно только значение между < и >, тогда используйте re.search вместо Вы можете просто значительно улучшить свое регулярное выражение:

>>> r = re.search(r"\<(?P<method>[^\>]*)\>", "# This <foo> truc")
>>> r.group('method')
'foo'
0
ответ дан Nikolas Stevenson-Molnar 18 March 2019 в 16:56
поделиться

Вам нужно изменить свое регулярное выражение, чтобы включить дополнительные пробелы перед This и <, тогда вы можете использовать атрибут groups:

some_match = re.match(r"\s*\#?\s*\w*\s*(\<)+\s*(?P<method>\w+)\s*(\>)+\w*", "# This <foo> truc")

some_match.groups()
('<', 'foo', '>')

some_match.groups(1)
'foo'
0
ответ дан C.Nivs 18 March 2019 в 16:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: