выражение регулярного выражения для соответствия дроби

#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* — ноль или более пробелов
  • > > шар.