使用re.sub后,从反向引用中删除字符

骨灰999

我有一个带有提及的用户名列表的字符串,例如:

s = '@romeo went to @juliet and said hi, I'm @romeo'

我想替换链接到用户配置文件应该成为用户名拍打<a href="/u/username">@username</a>我现在可以更换模式,但是,我似乎无法摆脱@href使用反向引用。

print(re.sub(r"(^|[^@\w])@(\w{1,31})", r'<a href="/u/\g<0>">\g<0></a>', s))

现在打印:

<a href="/u/@romeo">@romeo</a> went to<a href="/u/ @juliet"> @juliet</a> and said hi, Im<a href="/u/ @romeo"> @romeo</a>

现在您可以看到其中的多余空间,@使用正则表达式后似乎无法摆脱它

维克多·史翠比维

您需要使用

print(re.sub(r"\B(?<!@)@(\w{1,31})", r'<a href="/u/\1">\g<0></a>', s))

请参阅Python演示regex演示

正则表达式

  • \B@-@炭或者在串,或开始时立即用非字炭
  • (?<!@)-前面@不应紧接在前面@
  • (\w{1,31})-捕获组1(\1):1到31个字字符。

\1r'<a href="/u/\1">\g<0></a>'代表第1组值。\g<0>代表整个比赛。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python re.sub反向引用不反向引用

带有反向引用的re.sub

如何使用 Python re.sub 删除字符串后的所有内容

如何使用 re.sub 函数从字符串中删除 '[' 字符?

在re.sub中的反向引用中匹配大小写

使用数据中的反向选择通过引用删除多列

使用python中的re.sub函数删除字符串中的特殊字符和撇号以及多余的空格

使用re.sub()从匹配的模式中删除空格

替换列表中的字符串(使用re.sub)

不能在re.sub()repr表达式的函数调用中使用'\ 1'反向引用来捕获组

python-使用re.sub删除两个字符之间的空格

使用re.sub删除特定子字符串之后的所有内容

在Python re.sub函数中,如何使用\ n语法引用组0?

使用re.sub()时无效的组引用

使用python3中的re.sub()从字符串中删除所有数字,除了其后跟给定字母的数字

使用sed仅从引用字符中删除反斜杠

多次更换后使用DOTALL会中断re.sub

如何删除 在python中使用re.sub从文本签名

python排序并删除列表中的重复项,使用re.sub

使用 re.sub() 从 Pandas 数据框中删除所有其他内容时出错

使用 re.sub() 在 Python 中删除字母和逗号之间的数字

使用 python re 包替换函数 (re.sub) 将数据帧中的字符串转换为大写

使用re.sub()替换字符串的某些部分

使用 re.sub 替换多个字符

使用RegEx删除字符串中“ /”后的空格

使用awk拆分后,删除特定列中的字符

Python:如何使用`re.sub`删除字符串上嵌套文本周围的带图案文本?

如何在python中使用re.sub通过它的unicode删除一个字符

XQuery-使用反向字符串函数后,子字符串中的索引错误