繁体   English   中英

在python中使用Regex排除给定的字符串

[英]Exclude a given string using Regex in python

如果在任何给定的字符串中遇到“ un”,我想排除所有内容。 下面是我的代码,它仅输出法语! Le @ Mans-Quevilly Ro而不是法语! Le @ Mans-Quevilly Rouen对如何工作的任何帮助将不胜感激。

import requests, bs4, re

get_reg = re.compile(r'''
    ([\w+\W+]*(\s\w+)*\s-\s+\w+[^'un']*)  #teams
    (\s\w+\s) #tip
    (@\d+.\d+)
    ''', re.VERBOSE)
print(get_reg.findall("French! Le@ Mans - Quevilly Rouen un3.5 @1.23"))

[]匹配其中的任何字符,因此[\\w+\\W+]匹配任何不是单词字符,不是单词字符或+字符,这显然不是您想要的。 同样, [^'un']匹配不是'un之一的任何字符。

如您所问,该问题的解决方案是:

re.findall(r'(.*?)\s*un', "French! Le@ Mans - Quevilly Rouen un3.5 @1.23")

演示: https : //regexr.com/40806

这个非贪婪地匹配后跟空白和un ,并将第一部分作为一个组返回。

但是,从您的代码来看,您也试图匹配字符串的其他部分,从注释的讨论中,我认为您想要的是:

get_reg = re.compile(r'(.*?)\s*(un\d+.\d+)\s*(@\d+.\d+)')
print(get_reg.findall("French! Le@ Mans - Quevilly Rouen un3.5 @1.23"))

演示: https : //regexr.com/4085t

我从匹配组中排除了零件之间的空间,尽管这与您的示例有所不同,因为我怀疑这对您会更有用。

暂无
暂无

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

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