我試圖匹配後跟字母的「#」,當且僅當它的前面是換行符,空格或字符串中的第一個字符時。前兩個我已經完成了,但如果它是字符串中的第一個字符,我會很難匹配。我試圖找到'\ A'的用法,但它不能將它添加到包含換行符和空白符的類中。我錯過了什麼?嘗試匹配文本中的'#'
正則表達式我已經想出到目前爲止是:
from re import findall, escape
from string import punctuation, whitespace
NEWLINE = """\r\n?|\n"""
INVALID_TAG_CHARACTERS = escape(punctuation.replace('-', '').replace('_', '') + whitespace)
VALID_TAGS = r'[\s%s]+#[^%s]+' % (NEWLINE, INVALID_TAG_CHARACTERS)
tags = findall(VALID_TAGS, text)
這就像一個魅力,謝謝你! :-) 雖然我不得不將其更改爲「(?:^ | \ s)(#[^%s] +)%INVALID_TAG_CHARACTERS」。 – MdaG 2010-07-01 07:23:12
@MdaG,你可能想使用're.escape(INVALID_TAG_CHARACTERS)'來確保你不會意外地在你的模式中注入正則表達式特殊字符。 – 2010-07-30 13:34:02
是不是原來的帖子逃脫不夠? (即,' - ','')。替換('_','')+空格) – MdaG 2010-08-09 11:47:34