4

AND"."の前に数字が続く場合を除いて、すべての文字列を分割する正規表現が必要です。"."例:

"hello world.foo 1.1 bar.1"==>["hello world","foo 1.1 bar", "1"]

私は現在持っています:

"(?<![0-9])\.(?!\d)" 

しかしそれは与える:

["hello world", "foo 1.1 bar.1"]

しかし、最後の"."有効なものが見つかりません。

4

4 に答える 4

3

非| アプローチ:

(?<![0-9](?=.[0-9]))\.
于 2012-12-27T20:52:30.177 に答える
1

.数字が前に付いていない場合、または数字が後に続いていない場合は、次のように分割します。

In [18]: re.split(r'(?<!\d)\.|\.(?!\d)', text)
Out[18]: ['hello world', 'foo 1.1 bar', '1']
于 2012-12-27T20:20:20.240 に答える
1

これは、式全体が失敗するために、これらのアサーションの1つだけが失敗する必要があるためです。これを試して:

"(?<![0-9])\.|\.(?!\d)"
于 2012-12-27T20:21:25.723 に答える
0

最短の解決策を提供するために、ここに私のものがあります:

(これは、わずかな調整を加えた@ysthのソリューションです)

(?<!\d(?=.\d))\.

働くフィドル

于 2019-09-08T18:54:06.693 に答える