我有这样的字符串:


  约20公斤/约120公斤


我有此正则表达式("[0-9]{1,2} kg", string),但两次都返回20kg。我只需要在第一种情况下返回20kg

最佳答案

尝试这个:

(?<!\d)\d{1,2}\s+kg


(?<!...)negative look behind。因此,它匹配一个或两个不带数字的数字。我还使用一个或多个空格字符更改了文字空间。

看到您问过Python问题,下面是一个Python演示:

#!/usr/bin/env python
import re
string = 'something: 20 kg/ something: 120 kg'
print re.findall(r'(?<!\d)\d{1,2}\s+kg', string)


这将打印['20 kg']

编辑

正如@Tim所提到的,单词边界\b就足够了:r'\b\d{1,2}\s+kg'

关于python - 正则表达式仅匹配两个数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7566749/

10-12 22:49