#python #regex
Вопрос:
Я хочу написать регулярное выражение python, чтобы оно соответствовало следующему тексту
< 0 | d/dR | 1>
Я мог бы сделать что-то вроде этого
r"<s*(d )s*|s*xxs*|s*(d )s*>"
но не могу понять, как сделать дробную часть посередине ( d/dR
) представленной в виде xx
. Какая-нибудь помощь? Спасибо!!
Комментарии:
1. Что такое литерал и переменная в
d/dR
?2. @mozway : например, такое число, как 0.1031675 D-03 — извините, вы об этом спрашиваете?
3. Ты имеешь в виду что-то вроде
[0-9.] D-?d
?4. Что именно вы пытаетесь сделать? Не могли бы вы привести нам еще несколько примеров ввода и желаемого вывода?
5.
<s*(d )s*|s*(.*?)s*|s*(d )s*>
должно сработать, получаетd/DR
независимо от того, что это такое.
Ответ №1:
Вы можете использовать
<s*(d )s*|s*([^<>]*?)s*|s*(d )s*>
Смотрите демонстрацию регулярных выражений.
Обратите [^<>]*?
внимание, что здесь используется, он соответствует любому нулю или нескольким символам, отличным от <
>
символов и, как можно меньше. <
и >
отрицаются, потому <
что и >
здесь являются разделителями слева и справа, а класс отрицаемых символов помогает предотвратить совпадение <
и нежелательное совпадение.
Смотрите демонстрацию регулярных выражений. Подробные сведения:
<
— а<
чарs*
— ноль или более пробелов(d )
— Группа 1: одна или несколько цифрs*|s*
—|
заключено с нулем или более пробелов([^<>]*?)
— Группа 2: любые нулевые или более символов, кроме<
>
символов и, как можно меньшеs*|s*
—|
заключено с нулем или более пробелов(d )
— Группа 3: одна или несколько цифрs*
— ноль или более пробелов>
—>
шар.