Python 如何识别段落中的一系列数字

Python 如何识别段落中的一系列数字,python,regex,Python,Regex,我有一个段落/句子要从中识别 6位或更多数字的任何系列 任何带“-”(破折号)的数字序列 但我不想确认 前面有$(美元)的任何数字 任何带有(逗号)的数字序列 我怎样才能做到这一点 我尝试的正则表达式是:r'(?:\s|^)(\d-?(\s)?){6,}(?=[?\s]|$)' 但这并不准确 我在一个段落中寻找这些模式 123-456-789 123-456 123 456 123456789 它也可能在结尾处包含句号(.) 但它应该忽略以下模式 123654美元 123654美元 12456

我有一个段落/句子要从中识别

  • 6位或更多数字的任何系列
  • 任何带“-”(破折号)的数字序列
  • 但我不想确认

  • 前面有$(美元)的任何数字
  • 任何带有(逗号)的数字序列
  • 我怎样才能做到这一点

    我尝试的正则表达式是:
    r'(?:\s|^)(\d-?(\s)?){6,}(?=[?\s]|$)'
    但这并不准确

    我在一个段落中寻找这些模式

    • 123-456-789
    • 123-456
    • 123 456
    • 123456789 它也可能在结尾处包含句号(.) 但它应该忽略以下模式

    • 123654美元

    • 123654美元
    • 124569
    • 123*123*7732
    • 123h434k5454

      • 您可以匹配您不想要的内容,并在一组中捕获您想要保留的内容

        使用组1将返回值

        之后,您可能会过滤掉空字符串

        (?<!\S)(?:\$\s*\d+(?:\,\d+)?|(\d+(?:[ -]\d+)+\.?|\d{3,}))(?!\S)
        
        输出

        ['123456', '1234567890', '12345', '1-2-3', '123-456-789', '123-456-789.', '123-456', '123 456', '123 456 789', '123 456 789.', '123 456 123 456 789', '123', '456', '123', '456', '789']
        

        你的意思是像这样使用一个捕获组吗<代码>(?可能
        (?可以用6位数字代替数字6
        (?请查看带a的问题,并包括示例数据和预期输出。这将有助于确定哪个正则表达式最适合使用。我怀疑您使用的是
        Python
        ?是的,这几乎是准确的,但我想忽略前面带美元+空格的任何数字,例如$123654,$123654我当前的要求是在
        if中使用结果(re.match(regex,field.value.text.lower()):
        这将返回所有匹配项和组..我不能在这里使用re.findall()。我只希望re.match()中的group1结果返回一个,您可以从中获得您的意思,
        re.match(regex,field.value.text.lower()).group
        像这样吗?如果你想在两个备选方案中都使用它,你可以在备选方案之前预先添加它,否则你必须根据你允许的备选方案添加它。请注意,你是在扩展原始问题,考虑所有副作用会使模式变大。是的,基本要求已经得到了你的满足。但这些都是我预期的问题。这就是我澄清所有问题的原因。非常感谢。你帮了我很多忙。
        ['123456', '1234567890', '12345', '1-2-3', '123-456-789', '123-456-789.', '123-456', '123 456', '123 456 789', '123 456 789.', '123 456 123 456 789', '123', '456', '123', '456', '789']