Python 1或2或3十进制数的正则表达式,不允许前导零、精度2和分数
我正在尝试创建符合以下条件的正则表达式:Python 1或2或3十进制数的正则表达式,不允许前导零、精度2和分数,python,regex,Python,Regex,我正在尝试创建符合以下条件的正则表达式: 一个或两个或三个十进制数 小数内没有前导零 精度2 允许使用正确的分数(0.\uuuuuuu个数字)。 十进制数字前没有文本 正则表达式应与以下内容匹配: 123.45 103.67 100.45 25.68 5.97 1.05 23.07 187.08 0.26 正则表达式不应与以下内容匹配: .45 1234.45 023.45 03.67 845.7 我提出了以下正则表达式: (?<!.)^([1-9][0-9]{0,2}\.[0-9
- 123.45
- 103.67
- 100.45
- 25.68
- 5.97
- 1.05
- 23.07
- 187.08
- 0.26
- .45
- 1234.45
- 023.45
- 03.67
- 845.7
(?<!.)^([1-9][0-9]{0,2}\.[0-9][0-9])$
(?
除分数外,它满足上述所有条件
如果十进制数有2或3位,我不希望前导零。但是,如果它是正确的分数,我希望允许0)
但是,我的正则表达式与“0.”十进制数不匹配,因为它希望数字以1开头,因为“^[1-9]
”
请告知我如何修改我的正则表达式以匹配“0.”数字 这个呢:
\b(0|[1-9]\d{0,2})\.\d{2}\b
您可以看到它与您想要的完全匹配。试试这个正则表达式
\b(?!0\d{1,2}\.)\d{1,3}\.\d{2}\b
请参见您可以使用此正则表达式:
^(?!0+[1-9])\d{1,3}\.\d{2}$
(?!0+[1-9])
是一种负前瞻,它将停止数字中的前导零。假设您使用的是re.match,下面是您可以使用的最短值:
(?!0)\d{1,3}\.\d{2}
如果您正在使用搜索:
^(?!0)\d{1,3}\.\d{2}$
您不需要对第一个数字进行不同的处理,因此您可以使用\d(与[0-9]相同),并确保第一个字符不是0,并具有负前瞻性(?!0)。什么是“一个、两个或三个十进制数字”?或者更确切地说,它如何符合“精度2”@Qwerty(?应该实现什么?