9

これはすでに解決済みの問題かもしれませんが、私にはわかりません。私は 2 つの大きな整数を持っていstart_numberますend_number。他の数値 (文字列として表される) がシステムに入力され、正規表現を使用してこれを「範囲正規表現」と照合し、数値文字列が と の間にあるかどうかを確認する必要がstart_numberありend_numberます。

例えば:

  • start_number = 99519000
  • end_number = 99519099

したがって

  • expression = "^995190[0-9][0-9]$"

最終的に次の例の番号を一致させることができるようにします (一度に 1 つずつシステムに到着し、いつでも到着する可能性があります)。

  • "99519000"<-マッチ
  • "99519055"<-マッチ
  • "99519099"<-マッチ
  • "99519100"<- 一致しない
  • "99512210"<- 一致しない
  • "41234123"<- 一致しない

Python を使用して正規表現文字列パターン " expression"start_numberを作成するにはどうすればよいですend_numberか? 正規表現パターンを作成する必要がある開始/終了番号の「ブロック」がいくつかあります。これらのパターンをプログラムで作成する方法が必要です。

次のように仮定するのは公平です。

  • Start_number常に以下になりますend_number
  • 常に正の整数になります。
  • 私の場合、start_numberandend_numberは常に同じ「長さ」になります (つまり、文字列として表される場合、基数 10 の「文字」の数は常に同じになります)。

編集:明確にするために

4

2 に答える 2

3

数値範囲の正規表現を生成するには、Python パッケージregex_engineを使用します。

このパッケージは pip を使用してインストールできます

pip install 正規表現エンジン

from regex_engine import generator

generate = generator()

regex = generate.numerical_range(99519000, 99519099)

print(regex)

^(995190[1-8][0-9]|9951900[0-9]|9951909[0-9])$

浮動小数点および負の範囲の正規表現を生成することもできます

from regex_engine import generator

generate = generator()

regex1 = generate.numerical_range(5,89)
regex2 = generate.numerical_range(81.78,250.23)
regex3 = generate.numerical_range(-65,12)
于 2019-09-25T11:41:49.923 に答える