包含降价网址的字符串中的转义下划线字符

熊茶

给定一个字符串,例如:

"The user foo_bar has a Twitter account: https://twitter.com/foo_bar"

为了通过Telegram机器人API以markdown模式发送,其格式应为:

"The user foo\_bar has a Twitter account: [https://twitter.com/foo_bar]"

[]可以使用正则表达式添加到url)。

是否可以在Python中编写一个可以转义某些字符(例如_*在文本中)的函数,但是仅当这些字符不包含在URL中时才可以?

这是一个不检查字符位置的示例:

original_text = 'The user foo_bar has a Twitter account: https://twitter.com/foo_bar'
formatting_url = re.sub(
    'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', r'[\g<0>]', original_text)
escaping_char = formatting_url.replace('*', '\*').replace('_', '\_')
print(escaping_char)

输出:

The user foo\_bar has a Twitter account: [https://twitter.com/foo\_bar]

_网址中的in也将被替换。

维克多·德劳

首先使用正则表达式将括号添加到URL。然后,您可以遍历字符串的每个字母,并在网址之外的任何时候看到一个转义字符。每当看到字符[]来知道自己是否在url中时,都可以举一个标志

s = "The user foo_bar has a Twitter account: [https://twitter.com/foo_bar]"
in_url = False
output = ""
for letter in s:
    if letter == "[":
        in_url = True
        output += letter
    elif letter == "]":
        in_url = False
        output += letter
    elif letter == "_":
        if in_url:
            output += "_"
        else:
            output += "\_"
    else:
        output += letter
print(output)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

字符串中随机包含多个下划线

来自分类Dev

如何使用TestFX在包含下划线的文本字段中编写字符串?

来自分类Dev

检查字符串是否仅包含字母,数字和下划线

来自分类Dev

替换包含分数和下划线的字符串模式,捕获问题

来自分类Dev

列表排序,其中包含以下划线开头的字符串

来自分类Dev

如何从多个带下划线的可变大小的字符串中获取所需的字符?

来自分类Dev

RegEx匹配字符串中的非下划线字符,而不以@开头

来自分类Dev

在字符串Matlab的末尾删除下划线

来自分类Dev

在字符串下划线直到行末

来自分类Dev

如何通过最后的下划线分割字符串

来自分类Dev

替换字符串并忽略下划线

来自分类Dev

用下划线替换随机字符串序列

来自分类Dev

下划线后删除字符串

来自分类Dev

字符串格式问题(括号与下划线)

来自分类Dev

替换字符串并忽略下划线

来自分类Dev

字符串生成器下划线文本

来自分类Dev

下划线分隔字符串的树结构

来自分类Dev

如何从字符串的开头删除下划线

来自分类Dev

枚举可变属性字符串(下划线按钮)

来自分类Dev

在Kotlin中的字符串模板中的变量之后立即使用下划线(“ _”)

来自分类Dev

从字符串中删除下划线,但从字符串中的链接中删除

来自分类Dev

为什么字符串* RECURSION *出现在输出中,并且每个包含的数组名称都在$ GLOBALS数组输出中以下划线字符开头?

来自分类Dev

为什么字符串* RECURSION *出现在输出中,并且每个包含的数组名称都在$ GLOBALS数组输出中以下划线字符开头?

来自分类Dev

如何使用下划线js从对象数组中查找字符串?

来自分类Dev

如何在Java的控制台输出中打印带下划线的字符串

来自分类Dev

使用lodash或下划线js查找数组中字符串元素的出现次数

来自分类Dev

在iOS 8中使用NSMutableAttributedString的字符串的下划线部分不起作用

来自分类Dev

正则表达式从给定字符串中删除下划线

来自分类Dev

VBS Regex从字符串中获取下划线

Related 相关文章

  1. 1

    字符串中随机包含多个下划线

  2. 2

    如何使用TestFX在包含下划线的文本字段中编写字符串?

  3. 3

    检查字符串是否仅包含字母,数字和下划线

  4. 4

    替换包含分数和下划线的字符串模式,捕获问题

  5. 5

    列表排序,其中包含以下划线开头的字符串

  6. 6

    如何从多个带下划线的可变大小的字符串中获取所需的字符?

  7. 7

    RegEx匹配字符串中的非下划线字符,而不以@开头

  8. 8

    在字符串Matlab的末尾删除下划线

  9. 9

    在字符串下划线直到行末

  10. 10

    如何通过最后的下划线分割字符串

  11. 11

    替换字符串并忽略下划线

  12. 12

    用下划线替换随机字符串序列

  13. 13

    下划线后删除字符串

  14. 14

    字符串格式问题(括号与下划线)

  15. 15

    替换字符串并忽略下划线

  16. 16

    字符串生成器下划线文本

  17. 17

    下划线分隔字符串的树结构

  18. 18

    如何从字符串的开头删除下划线

  19. 19

    枚举可变属性字符串(下划线按钮)

  20. 20

    在Kotlin中的字符串模板中的变量之后立即使用下划线(“ _”)

  21. 21

    从字符串中删除下划线,但从字符串中的链接中删除

  22. 22

    为什么字符串* RECURSION *出现在输出中,并且每个包含的数组名称都在$ GLOBALS数组输出中以下划线字符开头?

  23. 23

    为什么字符串* RECURSION *出现在输出中,并且每个包含的数组名称都在$ GLOBALS数组输出中以下划线字符开头?

  24. 24

    如何使用下划线js从对象数组中查找字符串?

  25. 25

    如何在Java的控制台输出中打印带下划线的字符串

  26. 26

    使用lodash或下划线js查找数组中字符串元素的出现次数

  27. 27

    在iOS 8中使用NSMutableAttributedString的字符串的下划线部分不起作用

  28. 28

    正则表达式从给定字符串中删除下划线

  29. 29

    VBS Regex从字符串中获取下划线

热门标签

归档