簡體   English   中英

與re.sub混淆

[英]Confusion with re.sub

我有一個字符串aa{{{a {{ {aaa{我想翻譯成aa { { {a { { {aaa { 基本上每個{之前都必須有一個空格字符。

我當前使用的正則表達式替換函數是: re.sub(r'[^\\ ]{', lambda x:x.group(0)[0]+' {', test_case)該函數的結果是: aa {{ {a { { {aaa { (關閉,但字符串中有{{

我的方法在a{a{a這樣a{a{a部分上表現很好。 但是,如果兩個{字符像a{{a一樣在一起,那么它似乎只能在第一個{上操作,而完全忽略后面的{

一個更清晰的例子是大量的{{{{{{{{{{{{ 我的正則表達式替換返回: { {{ {{ {{ {{ {{ { 顯然跳過了緊緊嵌套{所有其他字符。

他們為什么跳過? 消除這種混亂的任何幫助將不勝感激!

PS對所有希望關閉所有打開的花括號的人感到抱歉。

我會在后面使用負數:

re.sub(r'(?<!\s)(\{)',r' \1','{{{{{{')

基本上,我們解析字符串,直到命中{為止。 如果前面的字符不是空格(即(?<!\\s)位),則{與之匹配,我們將其替換為前面的空格。

之所以跳過它們,是因為您的正則表達式使用兩個字符: [^\\ ]{ 您需要對前面的空格使用0寬度負向后搜索,以便不占用它: (?!<\\s){ 然后,您可以將其替換為" {" ,而不必擔心lambda的麻煩。

我希望這可以解決問題:

re.sub (' *{', ' {', test_case)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM