regex 从字符串列表中排除特定格式的正则表达式

cgyqldqp  于 2022-11-26  发布在  其他
关注(0)|答案(2)|浏览(147)

我最近开始使用正则表达式,目前对它们还不是很清楚。
我有一个字符串列表:

l = ['1P', '2.2', '1.2MP', '1.2P', '1.2.3', '1.2.3 P', '4.5.6']

如何排除包含此格式的所有字符串:x.y.z?
因此,列表将如下所示:

l = ['1P', '2.2', '1.2MP', '1.2P']
hyrbngr7

hyrbngr71#

import re
pattern = "\d+\.\d+\.\d+"  # 3 digits separated by two dots, each one with 1 or more digit
l = ['1P', '2.2', '1.2MP', '1.2P', '1.2.3', '1.2.3 P', '4.5.6']
matched = [item for item in l if not re.search(pattern, item)]
# matched = ['1P', '2.2', '1.2MP', '1.2P']

您可以看到re.serach()以及它如何与模式匹配。

ccrfmcuu

ccrfmcuu2#

下面是我的正则表达式。
^(?!(?:.+?[.]){2}).*$
^(?!(?:.+?[.]{2})-〉这是一个负的前瞻。这部分确保字符串不是x.y.z
.*-〉如果上述条件成立,则匹配整个字符串。
Demo link

相关问题