1

次の問題があります: ドットまたはコンマを含む可能性のある数字を含む文字列があります。例えば:

text = 'ην Θεσσαλονίκη και κατοικεί στην Καλαμαριά Θεσσαλονίκης, (οδός Επανομής 32)Το κεφάλαιο της εταιρείας ορίζεται στο ποσό των δέκα χιλιάδων διακόσια (10.200) ευρώ, διαιρούμενο σε δέκα χιλιάδες διακόσια (10.200) εταιρικά μερίδια, ονομαστικής αξίας ενός (1) ευρώ το καθένα, το οποίο καλύφθηκε ολοσχερώς'

次に、記号のない数字があります'10200'

'10.200'文字列内の部分文字列の場所を見つけたいと思います。

1 つの方法は、数字にドットを挿入するメソッドを作成することだと思います。

しかし、別の方法として、何らかの形式のあいまい一致を実行することもできます。

そのために、正規表現モジュールを試してみましたが、うまくいきませんでした。すなわち:

import regex
regex.search('(10200){i}', f'{text}' )

戻り値:

<regex.Match object; span=(1, 154), match='ν Θεσσαλονίκη και κατοικεί στην Καλαμαριά Θεσσαλονίκης, (οδός Επανομής 32)Το κεφάλαιο της εταιρείας ορίζεται στο ποσό \nτων δέκα χιλιάδων διακόσια (10.200', fuzzy_counts=(0, 148, 0)>

というわけで、10.200思っていた通りにはなりません。

何を提案しますか?

4

2 に答える 2

0

ファジーとは何を意味するのか少し不明です。10200これは、固定数 (この場合は文字列) の範囲内で数字とドットを一致させたいという推測です。

次のような正規表現を作成できます。

(編集更新: タイプミスを修正)

(?<![\d.])(?=\d+\.\d+(?![\d.]))1\.?0\.?2\.?0\.?0(?![\d.])

https://regex101.com/r/QM5W0m/1を参照してください

アサートは、数値を、最初の数字の後と最後の数字の前に単一のドットを持つように制限するだけです。

于 2020-07-02T18:10:23.823 に答える