正则表达式.匹配包含特殊字符或'http://'的单词

use*_*171 4 python regex

我希望匹配包含特殊字符或以"http://"开头的单词

所以这句话

%#llo,我的网站是:http://www.url.com/abcdef123

应该变成这个

我的网站

到目前为止,我有这个

re.sub(r"^[^\w]", " ", "%he#llo, my website is: http://www.url.com/abcdef123")
Run Code Online (Sandbox Code Playgroud)

这只是删除符号,但它不会删除与符号关联的单词(它也不会删除':'和','),也不会删除URL.

Mar*_*air 6

对于您提供的示例字符串,以下正则表达式可以正常工作:

>>> a = '%he#llo, my website is: http://www.url.com/abcdef123'
>>> re.findall('(http://\S+|\S*[^\w\s]\S*)',a)
['%he#llo,', 'is:', 'http://www.url.com/abcdef123']
Run Code Online (Sandbox Code Playgroud)

...或者您可以删除这些单词 re.sub

>>> re.sub('(http://\S+|\S*[^\w\s]\S*)','',a)
' my website  '
Run Code Online (Sandbox Code Playgroud)

所述|装置交替和将匹配的组中任一侧上的表达.左侧的部分匹配http://后跟一个或多个非空格字符.右边的部分匹配零个或多个非空格字符,后跟任何不是单词或空格字符的内容,后跟零个或多个非空格字符 - 确保您有一个至少有一个非字符串的字符串字符,没有空格.

更新:当然,正如其他答案暗示的那样,因为http://前缀包含非单词字符(/),您不需要将其作为替代 - 您可以简化正则表达式\S*[^\w\s]\S*.但是,也许上面的例子中的替换仍然有用.