2024-10-01 05:05:03 发布
网友
1)2003 CPT Code: 90801 - Psychiatric Diagnos... 2)y1983 Clinic Hospital, first hospitalization, ...
每当我尝试使用\b[\d]{4}\b时,我都会从第一个语句中得到2003和9080,而从第二个语句中没有。你知道吗
\b[\d]{4}\b
2003
9080
我想要的输出是第一行的2003,第二行的1983
1983
这是因为在开始处有\b,这意味着匹配单词边界处的数字,y1983与条件不匹配。你可以试试这个
\b
y1983
\b\D?(\d{4})\b
查看demo上的解释
您可以拒绝任意一侧的数字,而不是在\b上匹配:
(?<!\d)\d{4}(?!\d)
https://regex101.com/r/shVhnT/1/
以下正则表达式应将第一个组捕获为数字:
(?<=\d\))[a-zA=Z]?(\d+)
我为您创建的示例如下: https://regex101.com/r/RXJmFu/1
例如:
s = ['1)2003 CPT Code: 90801 - Psychiatric Diagnos...', '2)y1983 Clinic Hospital, first hospitalization, ...'] for match in s: print(re.findall(r'(?<=\d\))[a-zA=Z]?(\d+)', match)[0])
输出:
2003 1983
这是因为在开始处有
\b
,这意味着匹配单词边界处的数字,y1983
与条件不匹配。你可以试试这个查看demo上的解释
您可以拒绝任意一侧的数字,而不是在
\b
上匹配:https://regex101.com/r/shVhnT/1/
以下正则表达式应将第一个组捕获为数字:
我为您创建的示例如下: https://regex101.com/r/RXJmFu/1
例如:
输出:
相关问题 更多 >
编程相关推荐