2014-01-05 33 views
1

我想在方括號內找到突出顯示的區域。這些方括號中可以包含任何文本:[A hello world] [B this is a tree] [A tkinter documentation is bad]如何在Tkinter文本搜索方法中使用正則表達式?

我想強調的是有「A」字和他們在一起,像這樣的括號內的文字: enter image description here

要獲得起始索引和的數量匹配的字符我試過這個:

countVar = StringVar() 
reg_area = re.compile(r'\[A.*\]') 
index = text.search('1.0', reg_area, stopindex=END, count=countVar, regexp = True) 

這是行不通的,我收到。

TclError: bad text index "<_sre.SRE_Pattern object at 0x3856d78>" 

如何找到所有的出現並正確突出顯示它們?

回答

1

你有兩個問題。首先,你正在以錯誤的順序放置位置參數。第一個位置參數預計爲模式,第二個位置參數被視爲開始索引。由於您的第二個參數是SRE_Pattern的實例,因此您會收到錯誤的文本索引錯誤。

你需要改變你的參數的順序,使您的第一個參數是模式。接下來的兩個參數應該是開始和結束索引。

其次,當您將regexp設置爲True時,仍然必須以字符串形式傳遞該模式。文本小部件將把該字符串解釋爲正則表達式。您無法傳入已編譯的正則表達式。

下面是應該工作的例子:

index = text.search(r'\[A.*\]', "1.0", END, count=countVar, regexp=True) 

FWIW,this answer的問題Tkinter text highlighting in python給子類文本類添加一個名爲highlight_pattern方法的一個例子。

相關問題