我有一个输入字符串,它以某种方式提醒html代码,但是标记使用方括号而不是角括号
输入字符串为:
str = r'Lorem ipsum [dolor] sit amet'
我处理它与重新分裂使用模式
ptr = r'\[.*?\]'
检测标签。结果是一个列表
list = [r'Lorem ipsum ', r'[dolor]', r' sit amet']
问题是两个符号序列\[
应该表示[
符号,而不是开始标记
re.split(r'\[.*?\]', r'Lorem \[ipsum\] \\[dolor] sit amet')
给予
[r'Lorem \', r'[ipsum\]', r' \\', r'[dolor]', r' sit amet']
当我想
[r'Lorem ipsum \[dolor\] \\', r'[dolor]', r' sit amet']
所以我想理解的是,如何说,重新分割两个符号序列\x
是和转义序列,应该被视为一个符号
我猜我们可能想把字符串分成三部分,因为我们可以使用三个捕获组来收集我们想要输出的内容,可能类似于:
测试
Demo
你可以用
参见regex demo及其图表:
简而言之:
(?:[^][\\]|\\.)+
-除了]
、[
和\
或任何字符(如果未指定re.DOTALL
标志,则为换行字符)之外的任何字符的一个或多个序列用反斜杠转义|
-或\[[^][]*]
-a[
,然后是除[
和]
之外的任何0+字符,然后是]
李>Python demo:
输出:
将
r
放在字符串前面的目的是将其视为原始字符串->;Python将反斜杠视为文字字符。你应该用普通的字符串相关问题 更多 >
编程相关推荐