Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 1或2或3十进制数的正则表达式,不允许前导零、精度2和分数_Python_Regex - Fatal编程技术网

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

我正在尝试创建符合以下条件的正则表达式:

  • 一个或两个或三个十进制数

  • 小数内没有前导零

  • 精度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][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
    (?应该实现什么?