Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在特定字符之间插入空格,但如果后跟特定字符正则表达式,则不插入空格_Python_Regex - Fatal编程技术网

Python 在特定字符之间插入空格,但如果后跟特定字符正则表达式,则不插入空格

Python 在特定字符之间插入空格,但如果后跟特定字符正则表达式,则不插入空格,python,regex,Python,Regex,使用python正则表达式,我希望在字母字符和数字之间插入一个空格(字母总是在数字前面),但不能在(数字和连字符)之间或(数字和下划线)之间插入空格 理想情况下,我希望它能够替换这行中的所有此类示例(请参阅下面的第三个示例字符串),但即使只执行第一个示例也是非常好的 我已经走了这么远: import re item = "Bob Ro1-1 Fred" txt = re.sub(r"(.*)(\d)", r"\1 \2", item) print(txt) #prints Bob Ro1 -1

使用python正则表达式,我希望在字母字符和数字之间插入一个空格(字母总是在数字前面),但不能在(数字和连字符)之间或(数字和下划线)之间插入空格

理想情况下,我希望它能够替换这行中的所有此类示例(请参阅下面的第三个示例字符串),但即使只执行第一个示例也是非常好的

我已经走了这么远:

import re
item = "Bob Ro1-1 Fred"
txt = re.sub(r"(.*)(\d)", r"\1 \2", item)
print(txt) #prints Bob Ro1 -1 Fred (DESIRED WOULD BE Bob Ro 1-1 Fred)
我试着在不同的地方粘贴一个
来取消搜索的限制,但还没有找到神奇之处

示例字符串:
Original==>所需输出

1.“Bob Ro1 Sam cl3”
==>
“Bob Ro1 Sam cl3”
2.“某个人ro1-1 Sam”
==>
“某个人ro1-1 Sam”
3.“ribbit ribbit ro3_2 bob wow cl1-3”
==>
“ribbit ribbit ro 3_2 bow wow cl 1-3”

你可以用

re.sub(r'([^\W\d_])(\d)', r'\1 \2', s)

使用lookarounds的方法:

re.sub(r'(?<=[^\W\d_])(?=\d)', ' ', s)
输出:

Bob Ro 1-1 Fred
Bob Ro 1-1 Fred
Bob Ro 1 Sam cl 3
Bob Ro 1 Sam cl 3
Some Guy ro 1-1 Sam
Some Guy ro 1-1 Sam
ribbet ribbit ro 3_2 bob wow cl 1-3
ribbet ribbit ro 3_2 bob wow cl 1-3

你需要先看后看:


(?如何
Sam
没有出现在第一个样本输入的期望输出中?捕捉得好,revo-我的单个功能脑细胞再次失败-修复。@crashwap我使用ideone.com测试代码,但似乎插入了代码文本而不是链接。现已修复。
Bob Ro 1-1 Fred
Bob Ro 1-1 Fred
Bob Ro 1 Sam cl 3
Bob Ro 1 Sam cl 3
Some Guy ro 1-1 Sam
Some Guy ro 1-1 Sam
ribbet ribbit ro 3_2 bob wow cl 1-3
ribbet ribbit ro 3_2 bob wow cl 1-3