regex Python正则表达式(带字符异常的模式)

llmtgqce  于 2022-12-05  发布在  Python
关注(0)|答案(1)|浏览(81)

请我试图创建一个模式,可以索引一些引用,但我有一个情况下,我很难分开。
第一个
退货

12 =>  thiêu (30:33). chương 36-37 ghi lại tất cả những  2:6 việc này đã thật sự xảyra như thế nào (37:36-38\index[KT]{?@?!037|036 @37:36-38}).
13 =>  thiêu (30:33\index[KT]{?@?!030|033 @30:33}). chương 36-37 ghi lại tất cả những  2:6\index[KT]{?@?!02|06 @2:6} việc này đã thật sự xảyra như thế nào (37:3\index[KT]{?@?!037|03 @37:3}6-38\index[KT]{?@?!037|036 @37:3\index[KT]{?@?!037|03 @37:3}6-38}).

我想让它像这样做索引:

12 =>  thiêu (30:33). chương 36-37 ghi lại tất cả những  2:6 việc này đã thật sự xảyra như thế nào (37:36-38\index[KT]{?@?!037|036 @37:36-38}).
13 =>  thiêu (30:33\index[KT]{?@?!030|033 @30:33}). chương 36-37 ghi lại tất cả những  2:6\index[KT]{?@?!02|06 @2:6} việc này đã thật sự xảyra như thế nào (37:36-38\index[KT]{?@?!037|036 @37:36-38}).
f5emj3cl

f5emj3cl1#

这样做是否符合您的要求?转换要求是什么还不清楚,但这与您的目标字符串匹配:

import re

line = "thiêu (30:33). chương 36-37 ghi lại tất cả những  2:6 việc này đã thật sự xảyra như thế nào (37:36-38)."
want1 = 'thiêu (30:33). chương 36-37 ghi lại tất cả những  2:6 việc này đã thật sự xảyra như thế nào (37:36-38\index[KT]{?@?!037|036 @37:36-38}).'
want2 = 'thiêu (30:33\index[KT]{?@?!030|033 @30:33}). chương 36-37 ghi lại tất cả những  2:6\index[KT]{?@?!02|06 @2:6} việc này đã thật sự xảyra như thế nào (37:36-38\index[KT]{?@?!037|036 @37:36-38}).'

line1 = re.sub(r'(\d+):(\d+)-(\d+)', r'\1:\2-\3\\index[KT]{?@?!0\1|0\2 @\1:\2-\3}', line)
print(line1)
assert line1 == want1
line2 = re.sub(r'(\d+):((\d+)(?:-\d+)?)', r'\1:\2\\index[KT]{?@?!0\1|0\3 @\1:\2}', line)
print(line2)
assert line2 == want2

输出量:

thiêu (30:33). chương 36-37 ghi lại tất cả những  2:6 việc này đã thật sự xảyra như thế nào (37:36-38\index[KT]{?@?!037|036 @37:36-38}).
thiêu (30:33\index[KT]{?@?!030|033 @30:33}). chương 36-37 ghi lại tất cả những  2:6\index[KT]{?@?!02|06 @2:6} việc này đã thật sự xảyra như thế nào (37:36-38\index[KT]{?@?!037|036 @37:36-38}).

相关问题