Что соответствует этому шаблону регулярных выражений? - PullRequest
0 голосов
/ 24 сентября 2019
regex = re.compile(r"\s*[-*+]\s*(.+)")

Особенно эта часть: \s*[-*+]

Я хочу сопоставить это string:

[John](person)is good and [Mary](person) is good too.

Но это не удается.

Означает ли \s*[-*+] следующее:

соответствует необязательному пробелу, за которым следует один из символов: -, *, +

Это на Python.

1 Ответ

0 голосов
/ 24 сентября 2019

Шаблон \s*[-*+]\s*(.+) означает:

\s* - соответствует нулю или более пробелов

[-*+] - соответствует одному символу из набора: - или * или +

(.+) - сопоставить один или несколько любых символов и сохранить их внутри группы захвата (. означает, что любой символ и скобки обозначают группу захвата)

В вашем предложении шаблон выигралне соответствует никому из-за отсутствия какого-либо символа из набора -*+.

Соответствует, например, * (person) is good too. в

[John](person)is good and [Mary] * (person) is good too.

Демо

Чтобы сопоставить имена и их описание в скобках, используйте \[([^\]]+)\]\(([^)]+)

Объяснение:

\[ - соответствует [ буквально

([^\]]+) - сопоставить один или несколько символов с другими из ] и сохранить его в первой группе captuirng

\] - сопоставить [ буквально

\( - сопоставить ( буквально

([^)]+) - соответствует один или несколько символов другим из )

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...