![](/img/trans.png)
[英]Insert space between specific characters but not if followed by specific characters regex
[英]How to insert space between alphabet characters and numeric character using regex?
我正在尝试在数字字符和字母字符之间插入空格,以便我可以将数字字符转换为以下单词:
Input :
subject101
street45
Output :
subject 101
street 45
我试过这个
re.sub('[a-z][\d]|[\d][a-z]',' ','subject101')
但输出是这样的:
subjec 01
我如何使用 python 来做到这一点?
试试这个正则表达式:
(?i)(?<=\d)(?=[a-z])|(?<=[a-z])(?=\d)
用空格替换每个匹配项
说明:
(?i)
- 使匹配不区分大小写的修饰符(?<=\\d)(?=[az])
- 找到前面是一个数字,后面是一个字母的位置|
- 或(?<=[az])(?=\\d)
- 找到前面是一个字母后跟一个数字的位置import re
regex = r"(?i)(?<=\d)(?=[a-z])|(?<=[a-z])(?=\d)"
test_str = ("subject101\n"
" street45")
subst = " "
result = re.sub(regex, subst, test_str, 0)
if result:
print (result)
一种方法是将可调用对象传递给re.sub
。 这允许您重用匹配的子字符串来生成替换值。
subject = '101subject101'
s = re.sub(r'[a-zA-Z]\d|\d[a-zA-Z]', lambda m: ' '.join(m.group()), subject )
# s: '101 subject 101'
您可以在正则表达式中使用 if 语句(?(#group))
来检查 char 是数字还是字母。
正则表达式: (?<=([az])|\\d)(?=(?(1)\\d|[az]))
蟒蛇代码:
def addSpace(text):
return re.sub(r'(?<=([a-z])|\d)(?=(?(1)\d|[a-z]))', ' ', text)
输出:
addSpace('subject101')
>>> subject 101
addSpace('101subject')
>>> 101 subject
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.