![](/img/trans.png)
[英]regex in python, remove pattern '[…/…]' from the string in python
[英]Python regex to remove emails from string
需要替換字符串中的電子郵件,因此:
inp = 'abc user@xxx.com 123 any@www foo @ bar 78@ppp @5555 aa@111"
應導致:
out = 'abc 123 foo bar"
使用什么正則表達式?
In [148]: e = '[^\@]\@[^\@]'
In [149]: pattern = re.compile(e)
In [150]: pattern.sub('', s)
Out[150]: 'one aom 123 4two'
In [151]: s
Out[151]: 'one ab@com 123 4 @ two'
對我不起作用
更換:
\\S*@\\S*\\s?
通過''
在這里演示
一些解釋:
\\S*
:可以匹配盡可能多的非空格字符
@
:然后是@
\\S*
:然后是另一個非空格字符序列
\\s?
:最后有一個空格(如果有)。 請注意,“?” 需要與行尾的地址匹配。 由於“?”的貪婪性,如果有空格,它將始終被匹配。
我個人更喜歡自己解析字符串。 讓我們嘗試分割字符串並刪除帶有@
符號的項目:
inp = 'abc user@xxx.com 123 any@www foo @ bar 78@ppp @5555 aa@111'
items = inp.split()
現在我們可以做這樣的事情:
>>> [i for i in items if '@' not in i]
['abc', '123', 'foo', 'bar']
那使我們快到了。 讓我們對其進行一些修改以添加join
:
>>> ' '.join([i for i in inp.split() if '@' not in i])
'abc 123 foo bar'
它可能不是RegEx,但適用於您輸入的內容。
out = ' '.join([item for item in inp.split() if '@' not in item])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.