正则表达式不识别“#”去除

问题描述 投票:1回答:4

如何删除单词'#'在后面跟着'#'并不仅仅是'#'如果其存在本身,在单词中间,甚至在结尾的字符串。

目前我使用正则表达式表达:

test = "# #DataScience"
test = re.sub(r'\b#\w\w*\b', '', test) 

用于去除的话“#”开头'#'但它不会在所有的工作,它返回字符串,因为它是

谁能告诉我,为什么"#"不被认可和删除吗?例子 -

测试 - "# #DataScience"

预计输出 - "# DataScience"

测试 - "kjndjk#jnjkd"

预计输出 - "kjndjk#jnjkd"

测试 - "# #DataScience #KJSBDKJ kjndjk#jnjkd #jkzcjkh# iusadhuish#""

预计输出-"# DataScience KJSBDKJ kjndjk#jnjkd jkzcjkh# iusadhuish#"

python regex python-3.x data-science
4个回答
1
投票

尝试这个 :

test ="# #DataScience #KJSBDKJ kjndjk#jnjkd #jkzcjkh# iusadhuish#"
test = re.sub(r'(?<!\S)#(?=\S)', '', test)

输出:

# DataScience KJSBDKJ kjndjk#jnjkd jkzcjkh# iusadhuish#

0
投票

使用图形的问题是,#不是一个单词字符,因此\b不会使用它。您可以改用回顾后:

test = "#HereToHelp STUFF #DataScience"
print(test)
test = re.sub(r'(?:(?<= )|^)#\w+\b', '', test)
print(test)

#HereToHelp STUFF #DataScience
 STUFF 

0
投票

\b放置不正确。

您正则表达式的表述应该是:

r'#\b\w+\b'

而且,在+量词是指1个或多个节省了需要您\w\w*


0
投票

我知道有一个公认的答案,但我想出了这个正则表达式,似乎工作也没关系,我个人更喜欢这个,因为它更易于阅读对我来说:

(\A|[^#\d\w])#\w\w*\b
© www.soinside.com 2019 - 2024. All rights reserved.