正则表达式无法捕获最后一位数字

问题描述 投票:0回答:1

我有以下案例想要捕捉:

| Task| Text | Capture | 
|:---- |:------| :-----|
| Capture| 1.304 /XXX 0.0000 XX 15/Oct/2000    | 1.304 and 0.000 |
| Capture | XXX 1.304% - XXXX 15.10.2044 XXX | 1.304 but not part of the date 15.10.2044|
| Capture| XXX 11,8275% XXX1 AAA    | 11,8275|
| Capture| XX 0.0. vs. 2.895    | 2.895 |
| Capture| XX 0.0. vs. 2.895.    | 2.895 |

我创建了以下正则表达式:

(?<![,\.])(\d+[,.]\d+)[^,\.]%*

re.findall(r'(?<![,\.])(\d+[,.]\d+)[^,\.]%*',text)

问题是它无法用

2.895
检测最后两种情况。在一种情况下,它会检测到
2.89
,而在最后一种情况下,它会因为句号而无法检测到。我希望它检测句子末尾的小数,即使句子以句号结尾。

python regex
1个回答
0
投票
(?<![,\.])\b(\d+[,.]\d+)\b(?![.,]\d)

演示

负向前瞻匹配

.
,
后跟另一个数字。因此,这不会匹配像
15.10.2044
这样的日期,但它会匹配
2.895.
,因为
.
后面没有其他数字。

© www.soinside.com 2019 - 2024. All rights reserved.