python - 在 Python 中,如何使用正则表达式作为分隔符连接字符串列表而不用反斜杠字符转义

标签 python regex

我正在尝试将几个正则表达式与其中的任意数量的空格连接起来,这些空格由变量定义

SPACES = "\s*"

但是,如果我尝试

SPACES.join(['from','till'])

我明白了

'from\\s*till'

中间有一个额外的反斜杠字符。是否可以在不插入额外的 \ 的情况下使用 join 方法(以便结果为 'from\s*till')?

最佳答案

您只是在观察字符串对象的 __repr__ 和它的 __str__ 表示之间的区别。前者以转义形式显示特殊字符(您可以/应该用来实例化相同字符串对象的文字形式),后者则不显示:

> SPACES = "\s*"
> pat = SPACES.join(['ab', 'cd'])
> pat
'ab\\s*cd'  # == repr(pat)
> print pat
ab\s*cd     # == str(pat)
# re.match(pat, 'ab   cd') matches as expected

正如其他答案中提到的,'\s' 不是有效的转义序列,因此反斜杠被视为文字反斜杠,也可以作为文字 '\\':

> '\s*' == '\\s*'
True
> r'\'  # not a valid raw string! -> error

关于python - 在 Python 中,如何使用正则表达式作为分隔符连接字符串列表而不用反斜杠字符转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42418232/

相关文章:

python - Pandas 绘制两列,系列由第三列中的值定义

具有不同整数长度的正则表达式

javascript - 使用 JavaScript 从完整路径获取不带 GET 参数的文件名?

javascript - 从 GMail URL 获取唯一电子邮件标识符

python - Django 测试在数据库创建时卡住

python - 在 C# 中是否有 python 的 as 关键字

java - 使用正则表达式和匹配字符串方法的垃圾邮件过滤器

c++ - 解析小的特定参数的最有效方法

python - 如何在 python 中将有理数和十进制数字字符串转换为 float ?

python - 如何从文本中删除除单词和表情符号之外的所有内容?