Python 正则表达式 : Internal reoccurring spaces only

标签 python regex

在 python 上给定以下字符串:

    foo    bar

我一直试图只删除“foo”和“bar”之间重复出现的空格,并只用一次空格替换它,但留下第一个缩进/空格。

    foo bar

我已经尝试了以下正则表达式,通常它以意外结果结束。

[\s]+     # which selects all spaces
foobar
[\w][\s]+ # which selects the first characters and following spaces
    fobar

有没有办法使用正则表达式来完成这个?

编辑:抱歉!可能还不清楚,但字符串可能会有所不同,因为我的主要目标是只删除句子中重复出现的空格而不影响缩进! 再次编辑:StackOverflow 上已经提出的其他问题的区别在于我希望保留开头的空格而不是删除所有空格。 该项目是读取带有缩进的 txt 文件并删除 txt 文件中的所有空格。

最佳答案

您可以使用环视正则表达式:

>>> s = '    foo    bar    '
>>> print re.sub(r'(?<=\S)\s+(?=\S)', ' ', s)
    foo bar
  • (?<=\S) : 回头断言我们之前有非空格
  • \s+ : 匹配 1+ 个空格
  • (?=\S) : 向前看,断言我们前面没有空间

或者,您也可以使用捕获组:

>>> print re.sub(r'(\S)\s+(\S)', r'\1 \2', s)
    foo bar

关于Python 正则表达式 : Internal reoccurring spaces only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46924055/

相关文章:

python - 如何使用用户定义的类对象作为 networkx 节点?

python - python networkx 中的图模块化

regex - 如何使用多个工作线程处理logstash中的多行?

python - Numpy 数组与 Python 列表在一维矩阵(矢量)上的性能

python - pyqt应用程序在cx_freeze打包后丢失图标

python - 如何防止执行脚本时打开 HTML 本地文件?

xml - 使用正则表达式查找控制字符的 XML 字符引用

Java正则表达式只匹配双方括号中的单词

javascript - 正则表达式在 Adonis Js 中无法正常工作

c++ - 如何在qt中使用QRegularExpression匹配字符串开头的空格?