python - 具有破折号的数字模式的 Python 正则表达式
问题描述
我在 pandas 数据框中有一列名为 sample_id。每个条目都包含一个字符串,我想从这个字符串中提取一个具有两种形式之一的数字模式
1-234-5-6789
或者
123-4-5648
我无法为此定义正确的正则表达式模式。到目前为止,我一直在尝试以下方法:
re.findall(pattern=r'\b2\w+', string=str(data['sample_id']))
但这只是拉取以 2 开头的值,并且只是数字模式的第一块。如何用破折号表达上述模式?
解决方案
垂直管道|
在正则表达式中生成 OR,因此您可以使用:
test1='123-4-5648'
test2='1-234-5-6789'
re.findall(pattern=r'[0-9]-[0-9]{3}-[0-9]-[0-9]{4}|[0-9]{3}-[0-9]-[0-9]{4}', string=test1)
re.findall(pattern=r'[0-9]-[0-9]{3}-[0-9]-[0-9]{4}|[0-9]{3}-[0-9]-[0-9]{4}', string=test2)
[0-9]
0
匹配到9
(包括)范围内的单个数字,{4}
表示四个这样的数字应该连续出现,-
表示连字符,|
表示 OR 并分隔您提到的两个模式。
推荐阅读
- node.js - 带有 PATCH 的预检仅适用于隐身模式
- flutter - 如何在 Flutter 中解压 http 响应
- elasticsearch - Elasticsearch service hang and kills while data insertion jvm heap
- typescript - 类型“字符串”不可分配给类型“参考”
'。TS2769 - mongodb - 使用 Mongo4cats 的 Scala MongoDB 连接不起作用
- css - link_to 和 :hover 在我的 Rails 应用程序上不起作用
- django - 请为员工帐户输入正确的电子邮件和密码。两个地方都要注意大小写
- algorithm - 有人可以解释一下为什么二次函数在 Θ(n²) 中的具体证明吗?
- python - 如果return为none,如何在定义的函数中获取默认值?
- python - numpy arange functon throws AttributeError: while the same code gets executed over online ide