python - 在分隔符上拆分,除非后跟空格

标签 python regex

我正在尝试弄清楚如何拆分字符串,同时保留分隔符,除非分隔符后跟一个空格。我似乎是那里的大部分方式,除了紧跟在定界符后面的字符与定界符一起保留。

到目前为止,我有以下内容:

>>> s='\nm222 some stuff \n more stuff'
>>> re.split('(\n[^ ])',s)
['', '\nm', '222 some stuff \n more stuff']

我需要的结果是

['', '\n', 'm222 some stuff \n more stuff']

我在这里错过了什么?感谢您的帮助。

最佳答案

使用否定前瞻:

>>> s='\nm222 some stuff \n more stuff'
>>> re.split(r'(\n(?! ))', s)
['', '\n', 'm222 some stuff \n more stuff']

你的代码,

re.split('(\n[^ ])',s)

不起作用,因为 (\n[^ ]) 将“非空格”字符放入与 \n 相同的捕获组中,从而为您提供 \nm(\n(?! )) 避免使用“非空格”字符,将其放在下一个捕获组中但仍使用它进行拆分。

您可以在 python regex documentation page 上阅读有关前瞻的更多信息.

关于python - 在分隔符上拆分,除非后跟空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17889303/

相关文章:

r - 用 R 计算字符串中的空格序列

Python 正则表达式 : match a range of numbers with a separator

python - 如何在具有不规则数组形状的 numpy 中对操作进行矢量化/张量化

python - 查找具有最大属性值的对象的键

php preg_match_all 匹配错误的字符串

regex - 从正则表达式中获取子字符串

python - 从 sql 模式文件中提取 Table Create 语句

python - 按日期时间间隔比较两个数据帧(python pandas)

python - Cython 不适用于带参数的双装饰器。有解决方法吗?

python - 当前从解码字符串中删除 'surrogateescape' 个字符的习惯用法