![](/img/trans.png)
[英]Python regex to match groups of same length with match but varying between matches
[英]Python: regex to match between matches
文本文件輸出的語法形式為word> data <word
,其中需要刪除括號。 data
部分幾乎可以是任何東西(且長度可變),包括換行,空格,點,字母等。目前我正在使用...
text = re.sub("(>)(.{1,10})(<)", r"\2", text)
...但是它有明顯的局限性,1是長度。 不使用*
的原因是因為存在一些限制,即:
>
或<
dog> 7 4^ 8 0 . 2 1 6? <cat
dog> 7 4^ 8 0 . 2 1 6? <cat
dog> 7 4^ 8 0 . 2 1 6? <cat
與exam> 1961 5 . 66 9 <ple
exam> 1961 5 . 66 9 <ple
不匹配,而test> 0? <string
test> 0? <string
或over> 1980 31, 6 000 <flow
很好,應除去括號 如何解決?
為什么不這樣呢?
text = re.sub(r">((?:[^<>\d]|\d{2,})*)<", r"\1", text)
(?:[^<>\\d]|\\d{2,})*
匹配除尖括號或數字( [^<>\\d]
)以外的任何字符,或匹配至少兩個數字( \\d{2,}
),重復( *
)。
由於在一個問題進行一次編輯后,沒有一個回答者將答案添加到他們的答案中,所以我不得不發布另一個問題來回答這一部分並實際上完成了正則表達式。
最后,我正在使用的最終代碼是:
text = re.sub(r">((?!(?:[^<]*\\b\\d\\b){2})[^><]*)<", r"\\1", text)
它只允許1個數字,並且比賽中沒有方括號,否則會捕獲其他任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.