1

是否有可能编写一个正则表达式公式,它可以捕获多个单词字符加上-前导#但如果#在几个单词的末尾用空格分隔,那么捕获开始和结束之间的整个文本#

我相信我的代码比我的描述更容易理解:

import re

s = """
this is a dummy #text with some #dummy_short-tags
and a #full length long tag# that has closing symbol.
"""

print re.findall(r'#([\w-]+)', s)
# --> ['text', 'dummy_short-tags', 'full']
print re.findall(r'#(.+)?(?<!\s)#', s)
# --> ['full length long tag']

我可以将上面的两个正则表达式合二为一吗?因此,我可以避免同时捕获“完整”和“全长标签”,而且我的目标是将捕获的文本视为一种数据。

提前致谢!

4

1 回答 1

3

使用交替:

re.findall('#([\w\s]+\w(?=#)|[\w-]+)', s)

输出

['text', 'dummy_short-tags', 'full length long tag']
于 2013-06-21T01:02:54.433 回答