我正在尝试以类似@ [123456](John Smith)的模式捕获id和名称,并使用它们创建一个类似于<的字符串。 a href =“123456”>约翰史密斯< / A>
这是我尝试过的,但它不起作用。
def format(text):
def idrepl(match):
fbid = match.group(1)
name = match.group(2)
print fbid, name
return '<a href="https://www.facebook.com/{}">{}</a>'.format(fbid, name)
return re.sub(r'\@\[(\d+)\]\[(\w\s+)\]', idrepl, text)
答案 0 :(得分:4)
部分
(\w\s+)
只匹配一个单词字符,后跟1个空格字符。
显然,不你想要什么,而且很容易修复:
([\w\s]+)
“一个或多个字符,每个字符都是一个单词或空白字符”。
实际你想要什么,我不确定 - 快乐地匹配John Smith
,但不例如Maureen O'Hara
(撇号会妨碍比赛)或John V. Smith
(这里是阻碍比赛的点)或John Smith-Passell
(这里是破折号)。
一般来说,人们用可能的几个标点字符(以及单词字符和空格)拼写他们的名字 - 撇号,点,短划线等。如果你不需要考虑到这一点,那么,很好! - )如果你做,生活会变得更加困难(将这些字符放在上面的方括号中主要是这样,但需要采取预防措施 - 例如破折号,如果你需要它作为括号内的字符集的一部分,必须在最后,就在紧密括号之前)。