我需要一个 Python 中的正则表达式,如果它包含某个字符(在本例中为“#”),它将从字符串中删除最后一个单词,并且在该字符“#”的其他外观中,只删除该字符,而不是该单词。
所以字符串:
#美好的一天#快乐
会成为:
美好的一天
到目前为止我已经尝试过
entry = re.sub('(?<=#)\w+','',entry)
但这会删除所有包含“#”的单词。
import re
print(re.sub(r'''(?x) # VERBOSE mode
[#] # literal #
| # or
\s* # zero-or-more spaces
\w* # zero-or-more alphanumeric characters
[#] # literal #
\w* # zero-or-more alphanumeric characters
$ # end of line
''',
'', # substitute matched text with an empty string
'What a #great day #happy'))
产量
What a great day
import re
s='What a #great day #happy'
# Test if the last word has a '#'
if re.match('#',s.rsplit(' ', 1)[1]):
# Deal with everything but last word and do replacement
print re.sub('#', '',s.rsplit(' ', 1)[0])
else:
# Else replace all '#'
print re.sub('#', '',s)
>>> What a great day