扫码关注官方订阅号
python a="32<2>fdssa</2>ffdsa32" re.sub(r'<(\d+)>|</(\d+)>',"item",a)
python
a="32<2>fdssa</2>ffdsa32" re.sub(r'<(\d+)>|</(\d+)>',"item",a)
result:'32itemfdssaitemffdsa32'
如何正确替换得到结果: a="32<item>fdssa</item>ffdsa32"
<item>
</item>
欢迎选择我的课程,让我们一起见证您的进步~~
这样?
>> re.sub(r'<\d+>([^<]+)</\d+>', r'<item>\1</item>', '32<2>fdssa</2>ffdsa32') '32<item>fdssa</item>ffdsa32'
re.sub(r'((?<=<)|(?<=</))\d+','item',a)
或者
re.sub(r'((?<=<)|(?<=</))\w+','item',a)
由于look-behind requires fixed-width pattern,就是这个(?<=<|\/)无法写成(?<=<|<\/)这个形式。 所以,下面的只能凑合着用
look-behind requires fixed-width pattern
(?<=<|\/)
(?<=<|<\/)
re.sub(r'(?<=<|/)\d+(?=>)',"item",a)
下面的答案给了我提示:
re.sub(r'(<\s*\/?\s*)\d+(\s*>)', r'\1item\2', a)
美女,给你两个解法
第一个是用non-greedy match:
In [1]: re.sub(r'<(/?)\d+>+?',"<\g<1>item>","32<2>fdssa</2>ffdsa32") Out[1]: '32<item>fdssa</item>ffdsa32'
另外一个是传个函数进去:
def repl(match): if match.group(1): return "<item>" elif match.group(2): return "</item>" else: return "" re.sub(r'(<\d+>)+?|(</\d+>)+?',repl,"32<2>fdssa</2>ffdsa32") ==>'32<item>fdssa</item>ffdsa32'
import re a="32<2>fdssa</2>ffdsa32" re.sub(r'<\d+?>(.+?)</\d+?>', r'<item>\1</item>', a)
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这样?
re.sub(r'((?<=<)|(?<=</))\d+','item',a)
或者
re.sub(r'((?<=<)|(?<=</))\w+','item',a)
由于
look-behind requires fixed-width pattern,就是这个(?<=<|\/)无法写成(?<=<|<\/)这个形式。所以,下面的只能凑合着用
下面的答案给了我提示:
美女,给你两个解法
第一个是用non-greedy match:
另外一个是传个函数进去: