Im пытается создать регулярное выражение, которое фиксирует любое число (целое число, float, с научной записью или нет). Я использую группы, чтобы, если мне нужно что-то обновить, я обновляю только одну строку. Вот что я делаю:Python Regular Expression named groups
intNumber = r"(?P<Integer>-?(0|[1-9]+[0-9]*))" # Integer
floatNumber = r"(?P<Float>"+intNumber+r"\.[0-9]+)" # Float
sciNumber = r"(?P<Scientific>"+floatNumber+r"(e|E)(-|\+)?[0-9]+)" # Scientific
anyNumber = r"(?P<AnyNumber>"+sciNumber+"|(?P=Integer)|(?P=Float))" # Any number
Проблема заключается в том, что, хотя каждый из регулярных выражений работает сама по себе, когда я объединить их все в anyNumber
, используя или (|
) она фиксирует только номера научной нотации, а не отдыхать , Что я делаю не так?
Edit: Для уточнения мой вопрос, можно ли иметь динамически генерируемый регулярное выражение (с целью простого единого технического обслуживания пятна в виду), что также является достаточно гибким, чтобы позволить мне использовать его компоненты по отдельности, без проблем как переопределение групп и удобное название групп? Я знаю, что я могу просить слишком много ..
Попробуйте http://ideone.com/fu9eOy –