繁体   English   中英

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

[英]Regular Expression with Python (pattern with character exception)

请尝试创建一个可以索引一些参考的模式,但我有一个案例很难分开。

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)."
line = re.sub(r'([^–])(\d+):(\d+)([^\\|–|\}|\d])(\d+)', r'\1\2:\3\4\5\\index[KT]{?@?!0\2|0\3 @\2:\3\4\5}', line)
print("12 => ", line)
line = re.sub(r'([^–])(\d+):(\d+)(?!\-)', r'\1\2:\3\\index[KT]{?@?!0\2|0\3 @\2:\3}', line)
print("13 => ", line)

返回

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}).

这会做你想要的吗? 目前尚不清楚转换要求是什么,但这与您的目标字符串相匹配:

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

Output:

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}).

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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