我正在尝试以类似@[123456](John Smith) 的模式捕获 ID 和名称,并使用它们创建类似 John Smith 的字符串。
这是我尝试过的方法,但它不起作用。
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)
最佳答案
部分
(\w\s+)
恰好匹配一个单词字符后跟 1 个以上的空白字符。
很明显,这不是您想要的,而且很容易修复:
([\w\s]+)
“一个或多个字符,每个字符都是一个单词或空白字符”。
这是否是实际上您想要的,我不确定——它将愉快地匹配John Smith
,但不是 例如 Maureen O'Hara
(撇号会阻碍匹配)或 John V. Smith
(此处是阻碍匹配的点)或 John Smith-Passell
(这里是破折号)。
一般来说,人们在拼写自己的名字时可能会使用多个标点字符(以及单词字符和空格)——撇号、点、破折号等等。如果你不需要考虑这个,那么,很好!-) 如果你这样做,生活会变得有点困难(将这些字符放在上面的方括号内大部分都可以,但需要采取预防措施-- 例如破折号,如果您需要它成为括号字符集的一部分,则它必须位于末尾,就在右括号之前)。
关于Python Regex 捕获@[123456](John Smith),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28666624/