[英]Python RegEx Substitution expression representation with asterixis expression
我试图在列表前面加上一个“-”。 例如:
注意:这里的 V 代表我的列表项开始和结束的标识符。 (因为列表是长文本的一部分)。
V
Apple
Banana
Orange fruit
V
至
V
- Apple
- Banana
- Orange fruit
V
我设法通过这样做来匹配列表
V\n([A-Za-z]+( [A-Za-z]+)*)\r\n(([A-Za-z]+( [A-Za-z]+)*\r\n)*)\nV
但我对重置价值有疑问。 我正在考虑这种方法
V- \1\n- \2\nV
但这仅将缩进放在第一项上,并且基本上删除了列表的 rest。 像这样的东西:
V
- Apple
-
V
我正在使用 re.sub,顺便说一句
您可以使用替换 function:
import re
s = 'V\nApple\nBanana\nOrange fruit\nV'
r = re.sub('(?<=\n)[a-zA-Z]{1}', lambda x:v if (v:=x.group()) == 'V' else f'-{v}', s)
print(r)
Output:
V
-Apple
-Banana
-Orange fruit
V
你可以做:
import re
txt='''\
V
Apple
Banana
Orange fruit
V'''
print(
re.sub(r'(^V$\n)([\s\S]*?)(\n^V$)', lambda m: m.group(1)+'\n'.join([f'-{l}' for l in m.group(2).splitlines()])+m.group(3), txt, flags=re.M)
)
印刷:
V
-Apple
-Banana
-Orange fruit
V
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.