2

我需要一个 Python 中的正则表达式,如果它包含某个字符(在本例中为“#”),它将从字符串中删除最后一个单词,并且在该字符“#”的其他外观中,只删除该字符,而不是该单词。

所以字符串:

#美好的一天#快乐

会成为:

美好的一天

到目前为止我已经尝试过

    entry = re.sub('(?<=#)\w+','',entry) 

但这会删除所有包含“#”的单词。

4

2 回答 2

1
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
于 2012-12-06T11:34:06.173 回答
0
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
于 2012-12-06T11:27:04.773 回答