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