повторение "необязательных" аргументов - PullRequest
0 голосов
/ 21 марта 2020

Этот вопрос касается соответствия регулярному выражению. Предположим, у меня есть строка, которая может принимать одну из трех форм:

s1 = "id";
s2 = "id, title";
s3 = "id, title, date";

Я хотел бы создать регулярное выражение, которое извлекло бы поля id, title и date строки (если предусмотрено).

Используя синтаксис, подобный JavaScript, следующее регулярное выражение сопоставляет все три строки, делая все поля, кроме первого , xxxx, необязательными, используя? оператор. Это работает, но довольно громоздко:

const regex = /(\w+)(?:\s*,\s*(\w+))?(?:\s*,\s*(\w+))?/;
const s1 = 'id';
const s3 = 'id, title';
const s3 = 'id, title, date';

Есть ли более простой способ сделать то же самое?

1 Ответ

1 голос
/ 21 марта 2020
re_p = r"(\w+)(?:, *(\w+))?(?:, *(\w+))?"

Смотрите здесь результаты: Нажмите здесь

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