Python 在特定字符之间插入空格,但如果后跟特定字符正则表达式,则不插入空格
使用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
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