簡體   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