繁体   English   中英

re.findall()-其他条件

[英]re.findall() - additional criteria

我有这样的零件号:

part_number = '18-TX25-37 DMDFC PS'

当我做

>>> re.findall(r'\w+', part_number)
... ['18', 'TX25', '37', 'DMDFC', 'PS']

某些零件号可能带有点,例如“ '18-TX25-37.25 DMDFC PS'而我的正则表达式返回'37''25'等。如何使它不在点处分裂并返回“ '37.25'以及所有其他值?

\\w是一个字符类 ,它是[a-zA-Z0-9_]的快捷方式(即:字母,数字和下划线)。 换句话说,您的正则表达式正在搜索一个或多个(字母,数字或下划线)的所有组。 那么,当正则表达式引擎看到时,自然. 在字符串中,它不包括在先前的匹配中。

如果要包括在内. 作为有效字符,您需要明确地这样做:

>>> import re
>>> part_number = '18-TX25-37.25 DMDFC PS'
>>> re.findall(r"[\w.]+", part_number)
['18', 'TX25', '37.25', 'DMDFC', 'PS']

这表示“匹配一个或多个(字母,数字,下划线或点)的所有组”。

一个微妙之处: . 是正则表达式中的特殊字符,与任何一个字符匹配。 您不必在这里对其进行转义,因为它位于字符类内部(在[]之间),但是如果要在此类之外使用它,则需要在其前面加上反斜杠。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM