例如:
import re
s1 = 'LOGO 设计'
## s2 = '设计 LOGO'
s = re.sub('[a-zA-Z0-9]{3,}(\s)[^a-zA-Z0-9]', '', s1)
print(s)我希望找到至少3个ascii字符,然后是一个空格,然后是非ascii字符,然后用空字符串替换空白。我的代码有两个问题:
^a-zA-Z0-9
发布于 2022-09-16 22:29:17
将希望保留在捕获组中的字符串放在捕获组中,然后在替换中引用它们。
s = re.sub(r'([a-zA-Z0-9]{3})\s([^a-zA-Z0-9])', r'\1\2', s1)您不需要使用{3,},您可以只使用{3}。这将将最后3个字符复制到结果中。默认情况下,所有前面的字符都将被复制,因为它们没有被替换。
您还可以通过匹配前面有3个ASCII字符和一个非ASCII字符的空格来完成这一任务。然后用空字符串替换空格。
s = re.sub(r'(?<=[a-zA-Z0-9]{3})\s(?=[^a-zA-Z0-9])', '', s1)您可以在此方法中使用替代方法来匹配这两个订单。
s = re.sub(r'(?<=[a-zA-Z0-9]{3})\s(?=[^a-zA-Z0-9])|(?<=[^a-zA-Z0-9])\s(?=[a-zA-Z0-9]{3})', '', s1)发布于 2022-09-17 00:40:58
向前看和向后看
s1 = 'LOGO 设计 SKY आकाश'
st = re.split(r'(?<=[^a-zA-Z])(?=[a-zA-Z])',s1)
[re.sub(r'\s+','',e) for e in st]
['LOGO设计', 'SKYआकाश']https://stackoverflow.com/questions/73750769
复制相似问题