Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #198073
| Path | csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | ram@zedat.fu-berlin.de (Stefan Ram) |
| Newsgroups | comp.lang.python, alt.folklore.computers |
| Subject | Re: Pythonic way to combine regular expressions? |
| Followup-To | comp.lang.python |
| Date | 25 Sep 2026 19:19:19 GMT |
| Organization | Stefan Ram |
| Lines | 59 |
| Expires | 1 Sep 2027 11:59:58 GMT |
| Message-ID | <order-20260925201802@ram.dialup.fu-berlin.de> (permalink) |
| References | <MrztS.208529$Nn1.7474@fx18.ams4> <pattern-20260925200755@ram.dialup.fu-berlin.de> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=UTF-8 |
| Content-Transfer-Encoding | 8bit |
| X-Trace | news.uni-berlin.de ceckoGWekfmGZk6X/rgZ+gWV2JRJHLJZ9WTHlJwXKmY997 |
| Cancel-Lock | sha1:nZG3bHcqnep21mM2nHrJa6ys6kc= sha256:vv9bw0wcOdXac+31ocrgCzrpaNnENew2oSgenplxJf4= |
| X-Copyright | (C) Copyright 2026 Stefan Ram. All rights reserved. Distribution through any means other than regular usenet channels is forbidden. It is forbidden to publish this article in the Web, to change URIs of this article into links, and to transfer the body without this notice, but quotations of parts in other Usenet posts are allowed. |
| X-No-Archive | Yes |
| Archive | no |
| X-No-Archive-Readme | "X-No-Archive" is set, because this prevents some services to mirror the article in the web. But the article may be kept on a Usenet archive server with only NNTP access. |
| X-No-Html | yes |
| Content-Language | en |
| Xref | csiph.com comp.lang.python:198073 alt.folklore.computers:235705 |
Cross-posted to 2 groups.
Followups directed to: comp.lang.python
Show key headers only | View raw
ram@zedat.fu-berlin.de (Stefan Ram) wrote or quoted:
>Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> wrote or quoted:
>>What is a good way to combine regular expressions in Python? We are
>>cogitating the most /Pythonic/ way to make this happen.
>> number:
>> sign? integer-constant
>> | sign? floating-point-constant
>> integer-constant:
>> digit-sequence
>> floating-point-constant:
>> fractional-constant exponent?
>> | digit-sequence exponent
>> fractional-constant:
>> digit-sequence? "." digit-sequence
>> | digit-sequence "."
>> exponent:
>> ( "e" | "E" ) sign? digit-sequence
>> sign:
>> "+" | "-"
>> digit-sequence:
>> digit
>> | digit digit-sequence
>> digit:
>> "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
>Maybe something like this?
We can also write the definitions in the same order as in the EBNF.
import re
from typing import Final
NUMBER = lambda: rf"^{SIGN()}?(?:{INTEGER_CONSTANT()}|{FLOATING_POINT_CONSTANT()})$"
INTEGER_CONSTANT = lambda: DIGIT_SEQUENCE()
FLOATING_POINT_CONSTANT = lambda: \
rf"(?:{FRACTIONAL_CONSTANT()}(?:{EXPONENT()})?|{DIGIT_SEQUENCE()}{EXPONENT()})"
FRACTIONAL_CONSTANT = lambda: \
rf"(?:(?:{DIGIT_SEQUENCE()})?\.{DIGIT_SEQUENCE()}|{DIGIT_SEQUENCE()}\.)"
EXPONENT = lambda: rf"[eE]{SIGN()}?{DIGIT_SEQUENCE()}"
SIGN = lambda: r"[+-]"
DIGIT_SEQUENCE = lambda: rf"{DIGIT()}+"
DIGIT = lambda: r"[0-9]"
NUMBER_VALIDATOR: Final[ re.Pattern[ str ]] = re.compile( NUMBER() )
example = "123"
is_ok = bool( NUMBER_VALIDATOR.match( example ))
print( is_ok )
Newsgroups: comp.lang.python,alt.folklore.computers
Followup-To: comp.lang.python
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Pythonic way to combine regular expressions? Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-09-26 02:54 +0800
Re: Pythonic way to combine regular expressions? ram@zedat.fu-berlin.de (Stefan Ram) - 2026-09-25 19:08 +0000
Re: Pythonic way to combine regular expressions? ram@zedat.fu-berlin.de (Stefan Ram) - 2026-09-25 19:19 +0000
Re: Pythonic way to combine regular expressions? ram@zedat.fu-berlin.de (Stefan Ram) - 2026-09-26 10:04 +0000
Re: Pythonic way to combine regular expressions? Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> - 2026-09-26 20:09 +0800
Re: Pythonic way to combine regular expressions? ram@zedat.fu-berlin.de (Stefan Ram) - 2026-09-26 12:22 +0000
csiph-web