繁体   English   中英

Python RegEx 替换表达式用 asterixis 表达式表示

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM