專利名稱:通過利用查找和替換輸入的派生的查找和替換功能來編輯文本的方法和系統的制作方法
技術領域:
本發明通常涉及文本編輯,并更具體地涉及改進的"查找和替換功能"。
背景技術:
編程者經常通過復制幾乎最符合他們需要的相關代碼、然后替換其部分 以適合手頭的新代碼的最佳目標來給他們的源代碼添加新的功能/方法。特別 地,可以通過復制現有元素的代碼、然后用要被創建的元素的名稱替換現有 元素的名稱來移植適合集合中的元素(諸如類中的屬性或方法,或包或類中 的類)的樣式。
例如,考慮到處理數據元素的以下類具有被認為期望可用于要被創建的
概念段(concept segment)的特性,編程者將典型地復制DataElement.java文 件內容到Segment.java文件,然后編輯Segment.java文件來用對段的引用替 換對數據元素的所有引用。 public class DataElement{ public DataElementO {
private String DEFAULT—DATA—ELEMENT—NAME: "dummyName"; private String dataElementName= DEFAULT—DATA—ELEMENT—NAME; /"Return the data element name.*/ public String getDataElementName() { return dataElementName;
對于類似于這個的很小的例子,編程者將適當做出少量編輯,以用右邊 列的對應部分來替換左邊列的項
data element segment
DATA—ELEMENT SEGMENT dataElement segment DataElement Segment
當源的長度變大時,則編程者將切換到使用編輯器(是使用窗口系統的 編輯器或不是使用窗口系統的編輯器,查找和替換命令是最經常可用的)中 可用的查找和替換功能。然后問題在于,對于單個概念替換("用段邏輯地替 換數據元素"),編程者將最終啟動四次查找和替換命令。
對于該問題的傳統解決方案包括
-使用匹配大小寫選項(match case option )以在概念的不同形式之間加以 區分;盡管這是有用的,但是這僅分割了問題,留給編程者基于每個具體情 況的最終發言權。
-在不使用匹配大小寫選項的情況下, 一些替換工具(諸如Microsoft (RTM) Word 2000)能夠推斷簡單的大小寫匹配;例如,要求用"segment" 替換"data element"將讓步于用"segment"替換"Data element"的方案, 然后用"Segment"有效地替換它;注意,被要求用"segment element"替換 "data element"的同一工具不能用"segment Element"來替換"dataElement", 而是反而生成"segment element"。
-復雜的常規表達式匹配;使用VI、 Emacs或其他功能強大的編輯器,有 經驗的編程者能夠實現多種多樣的替換需要;這需要復雜的替換表達式,因 此是盡管這樣做但仍容易出錯的方式,并且仍然未解決最難的情況。
那些解決方案共有的局限在于,它們包含多次使用場景(scenario),以 通過編程者明確指定概念的每個變化來得到最后期望的結果。僅VI或Emacs 能夠應付諸如DATA—ELEMENT的大小寫,但它缺乏用于其他大小寫的用具。
如果我們將上述考慮的問題放大到更普遍的問題得到常規編程樣式, 其應用于管理它們的實例之間的差別的少量參數,則存在那樣做的無數方式, 從能夠接近于最終代碼外觀(aspect)的模板(例如, 一些源工具提供模板且 能夠生成代碼的部分)或從更加概念上的符號(諸如UML)開始。但是,它 們不遵循相同的場景。在所需樣式存在于工具中或由編程者隨時間開發的庫 中的情況下,它們是完全精細的。在編程者開發新的途徑并提煉新興的模板 的情況下,復制/粘貼/查找和替換場景自然得多。
進行場景的查找和替換階段的另一方式是包含了解所考慮的編程語言語
義的重分解工具(refactoring tool )。例如,復制DataEl畫nt類到另 一 包中, 然后要求重分解工具對其重命名成Segment。雖然這將適當地(并且比基于 查找和替換工具的任何文本更準確地)改變類名稱、其構造程序名,甚至在 被要求這樣做時改變對注釋中的類名的引用,但是它仍然無法匹配諸如 dataElement的派生形式。此外,在語義級別上動作并不總是可期望的或甚至 可能的。例如,如果要在與已有的包相同的包中創建新的類,則在進行部分 重命名處理之前無法使其正確地編譯。
例如,編輯器Microsoft ( RTM ) Word 2000在替換中提供初始大小寫的 適應管理。當大寫字母處于要被查找的詞的第一位置時,該編輯器提供了對 大寫字母的部分支持。當對常規表達式進行查找和替換時,在大寫字母沒有
出現在搜索字串中時難以指定適當的替換大寫字母;被應用以查找"data element"并用 "segment element"來替換的查找和替換將對Data element起 作用,而對data Element不起作用。
具有題為 "Morphological search and replace applying to natural language" 的微軟公司US專利US5873660教導了通過檢索具有相同字根(root word) 的詞形式的集合以查找詞的變形形式(inflected form )。這暗示了查找和替換 的詞匹配部分話語。用于查找所輸入的查找和替換的詞的變形形式的解決方 案典型地用于以自然語言書寫的文本,這是因為,可以通過應用語言的語法 規則來從所輸入的查找和替換的詞中派生出變形形式。但是,不能使用該解 決方案來查找例如是編程語言的所輸入的文本的查找和替換的詞的變形形 式,因為根據一個人能夠參考的已知語法規則,變形形式是與所輸入的查找 和替換的詞不相關的、不同的詞匯語義形式。
另外,諸如US專利US5873660中對自然語言的現有技術解決方案是基 于詞典的。詞典存儲了對于給定詞的所有變形詞形式。存儲詞典的數據庫的 大小和維護該數據庫的成本隨時間變得非常不現實。當除了詞以外、如在編 程語言的情況下還需要使查找和替換功能不僅應用于詞還應用于表達式時, 數據庫的大小和對其演進的控制變得更加不現實。在這種情況下,詞典應該 包含對每種可能的詞組合的每個表達式的變形形式。
因此需要在一次遍歷(pass)中進行的、并應用于以編程語言書寫的文 本或如下其他類型的文本的查找和替換編輯功能在該其他類型的文本中, 所輸入的查找或替換的詞或表達式的變形形式是不遵循已知自然語言的語義
或語法規則的詞或表達式。通過這些語言,所輸入的查找或替換的詞或表達 式的變形形式可以是對于同 一概念的不同的經授權的詞匯語義代碼編纂
(codification )。
發明內容
因此,本發明的目的是提供一種方法,用于在一次遍歷中對以不總是自 然語言的語言而書寫的文本進行所輸入的查找和替換的詞或表達式和/或這 些輸入的變形形式的查找和替換。
通過一種方法、計算機程序和系統,根據權利要求1到14實現該目的, 其中該方法、計算機程序和系統用于對從由用戶提供的一對初始的查找和替 換的表達式開始的文本進行查找和替換編輯操作,將定義了初始查找表達式 和初始替換表達式的可允許的變形形式的每個規則應用于初始的查找和替換 的表達式,以標識對于規則來說有效的查找表達式和替換表達式的所有派生 對。派生對的查找表達式和替換表達式對應于初始查找和替換表達式的變形 形式。然后,對于派生對的查找表達式的文本中的每個匹配,建議用戶在文 本中用于替換的派生對。通過文本編輯器的常用圖形用戶界面或通過基于文 本的終端用戶界面來作為用戶界面。查找和替換操作可以通過執行包括查找 和替換命令的程序而主動進行,或可以通過在程序執行期間詢問用戶以給出
他的選^r來交互進行。
本發明的查找和替換方法通過在不知道自然語言的情況下應用純粹的詞 匯語義變換來選擇變形形式。它應用于當以自然語言書寫詞或表達式時的任 何類型的文本,也可以被用在沒有用于對應的自然語言的語法規則的文本中。
本發明的方法為單個概念的多種語義形式提供了統 一 的查找和替換用
具,這在編程環境中特別需要;其他解決方案沒有將單個概念的不同語義形 式鏈接在一起成為粘結整體(cohesive whole )。
在單個交互而不是多個交互中進行查找和替換;用戶僅需啟動一個查找 和替換會話;其他解決方案需要進行幾次遍歷。
通過本發明的優選實施例的解決方案,僅存儲定義了詞或表達式的可允 許的變形形式的一組規則。因此不使用過大的詞典來存儲所輸入的查找和替 換的詞或表達式的變形形式。
和替換概念一樣普遍。事實是,特別是從15年以來,在編程中已經^l強調對 多種形式的長名稱的非常一致的使用,其中每種形式的名稱向編程者傳遞一 些信息,并且該名稱本身傳遞概念上的信息。最近, 一些軟件開發方法已經 強調程序源代碼的角色作為關注的最終目的和開發該代碼的受喜愛的研究方 式。這使程序編輯器成為本發明的第一類目標。在編程舞臺之外的例子如下。 領域使用姓的歷史、傳記。
原始文本
"The Duke of Ellington was born in ... Ellington is especially known for his ..." 規則
-Title of Name -> The Title of Name
->the Title of Name
應用
-查找和替換從句("Duke of Ellington" 、 "Prince of Wales") -結果
"The Prince of Wales was born in ... Wales is especially known for his ...,,
本發明的解決方案不需要大型的依賴語言的數據庫,且使用更簡單的算 法實現更完善的效果。
可以通過將本發明的解決方案與現有查找和替換技術的大多數功能相結 合來改進本發明的解決方案。例如,它完全兼容給予末端用戶的傳統選擇以 跳過匹配或用替換表達式來替換它。它還兼容是否注意查找表達式中的大小 寫的選項,以-f又匹配全字(whole word)或4妄受詞的子部分的匹配,并且更 普遍地兼容查找表達式中的常規表達式的使用。另外,在計算環境不使用詞 作為關鍵詞的那些具體情景中,它可以與用于查找遵循相對應的自然語言的 語法規則的、文本的詞的變形形式(如果它們存在)的現有技術的任何其他 現有解決方案相結合。
其他優點列于以下
-本發明的查找和替換功能生成變型而不需要用戶自己這么做;這節省了 時間和打字錯誤;這也避免了以下情況如果用戶當進行查找和替換時沒想 到具體的變形形式,則具體的變形形式仍然存在于文本中。-本發明的查找和替換功能當應用于例如編程代碼文本時,僅考慮文本的 詞而不考慮程序的邏輯表示,因此適應于不完整和不正確的程序文本(這在 開發過程中經常發生);大多數功能強大的其他解決方案中的一些(尤其是重 分解工具)很少容忍編程錯誤。
-本發明的解決方案可以被并入現有的查找和替換功能結構中,這一方面 降低了實現本發明的成本,并且另一方面使它直接面對用戶。
-本發明的查找和替換方法以靈活、可擴展和可定制的方式來操作;末端 用戶組織可以基于公司、部門、小組和個人來根據需要設計解決方案。 -其他不同領域的編程者或用戶很容易理解本方法的操作模式。 -如前所述,本發明的方法應用于多種編程語言,并且可能應用于除了編 程的范圍以外的其他形式語言。
圖1是根據優選實施例的本發明的方法的系統環境;
圖3是在本發明的優選實施例中實現的查找和替換操作的流程圖; 圖4詳細描述了應用圖3的變換規則(320)的步驟的可能實施例; 圖5是使用圖形用戶界面的本發明的優選實施例的圖示。
具體實施例方式
圖1描述了根據優選實施例的本發明的方法的系統環境。本發明的優選 實施例是在計算機上執行的軟件程序。文本編輯器(120)被安裝在給其提供 圖形用戶界面層(110)的操作系統(100)上。文本編輯器(120)允許末端 用戶(end user)可視和修改文本(121 )。在其他性能之中,文本編輯器(120 ) 給末端用戶提供由查找和替換對話(dialog) (122)實現的查找和替換用具。 本發明通過面向編程的查找和替換擴展(123)(其輸入、輸出和行為將稍后 參考其他圖在文檔中描述)來擴展查找和替換對話(122)的性能。該擴展必 須被編到編輯器的查找和編輯功能中。希望這在某些情況下可以通過使用外 部API而成為可能,但通常,將需要修改編輯器的源代碼。在后一情況下, 所需的修改應該主要影響所述編輯器的查找和替換模塊,除非其代碼沒有被 組織到清楚定義的模塊中。可以在包括查找和替換功能性的實際上所有文本編輯軟件包中實現本發明。例子包括具有比在優選實施例中公開的用戶界面 更豐富的用戶界面(比如集成開發環境)或更簡單的用戶界面(比如面向終 端的文本編輯器)的系統。優選但不強制的是,查找和替換功能給用戶提供 交互部件以選擇地接受或拒絕所建議的對文本的改變。
圖2圖示了當執行優選實施例的方法時所使用的組件。
注意,可以通過文本編輯器的常用圖形用戶界面或通過基于文本的終端 用戶界面來作為用戶界面。查找和替換操作可以通過執行包括查找和替換命 令的程序而主動進行,或可以通過在程序執行期間詢問用戶以給出他的選擇 來交互進行。在優選實施例中,通過現有文本編輯器的圖形用戶界面并以通 過與用戶對話的交互方式來進行操作。
用戶界面使查找和替換對話(122)接口于文本編輯器下的文本(121 )。 查找和替換對話通過查找和替換輸入區域(221 )和替換對話控制區域(222 ) 在文本(121 )上動作并收集用戶輸入。查找和替換輸入區域(221 )在大多 數文本編輯軟件包中是傳統的,并主要包括
-用于收集必須包括一個或多個詞的查找表達式的輸入區域, -用于收集如查找表達式一樣形成的替換表達式的輸入區域, -用于很多選項(諸如是否匹配大小寫,是否對整個文檔查找等等)的零值。
替換對話控制區域傳統地包括少量圖形控制,該少量圖形控制允許用戶 基于查找表達式匹配來決定他是否想要用替換表達式來替換該查找表達式。
擴展。在本發明的優選實施例中,添加了多個選擇界面,在該多個選擇界面 中顯示對關于查找表達式的任何給定匹配的所有可能的替換表達式。取決于 在規則存儲(230)中指定的規則和文本(121)的精確內容,每個查找表達 式可以具有零個、 一個或許多匹配,并且如果有匹配,則每個匹配可以產生 (yield) —個或多個替換表達式。無論何時許多替換表達式是可能的,替換 對話控制區域(222)必須為用戶給出選擇他優選的替換表達式(或完全地跳 過匹配)的可能性。在替換控制區域中, 一次列出了一個不同的查找表達式, 并且列出了對于每個查找表達式的所有可能的替換表達式。
規則數據庫(230)包含必須應用于查找和替換對的變換規則。規則典型 地被實現為采用輸入中的字串并返回變換后的字串作為輸出的例程。幾乎沒
有限制應用于變換規則(本質上,它們應該決不出錯,并且應該從不返回空 字串)。因此,它們能夠適應任何形式語言(無論其是否是編程語言)的需要。 本發明的各種實施例可以使用不同的編程語言,或甚至更高級的形式語言(例
如樣式匹配引擎)。規則的例子將是Java方法,其將使其輸入字串的所有字 母字符大寫,并使其他字符不改變。這是本發明的優選實施例的方法的與眾 不同且實質的部分。查找和替換對數據庫(240)存儲通過將規則(230)應 用于被鍵入到查找和替換對話(122)中的查找和替換對而獲得的查找和替換 對,沒有重復。
變型生成引擎(250 )將規則(230 )應用于被鍵入到查找和替換對話(122 ) 中的初始查找和替換對的字串,來獲得它們的變形形式。初始查找和替換對 的變形形式被存儲在查找和替換對數據庫(240)中。變型生成引擎(250 ) 本質上將規則數據庫(230)的所有可能的規則應用于初始查找和替換對,然 后去除重復。可以在生成了所有可能的變型以后進行重復的去除,或就在生 成期間進行重復的去除。變型生成引擎(250 )技術可以多種多樣。在本發明 的優選實施例中,它將是Java類或能夠利用(leverage)如Java方法所述的 規則(230 )的類的集群,。
在文本(121)中的匹配的索引存儲了指向查找和替換對(240)的查找 表達式。在文本中的索引的一個例子可以是存儲該匹配在文本中的位置和匹 配的字符串的在文本(121 )中的寬度,其中對其添加了匹配的查找表達式的 標識符。 一些文本編輯器(120)可能在查找和替換操作期間已經建立和利用 了匹配的形式存儲。本發明需要更豐富的匹配數據庫(260),其至少用每個 匹配的匹配查找表達式的指示來補充傳統的匹配數據庫(而當不包含本發明 時該查找表達式是唯一的)。
傳統的搜索引擎(270 )能夠在文本(210 )中標識對于查找和替換對(240 ) 的查找表達式的匹配,以便產生匹配數據庫(260)的條目。期望本發明能夠 在大多數情況下利用搜索引擎(270)而不修改它,雖然它可能需要多次查找 遍歷,其中每次遍歷收集對于給定查找表達式的匹配。
圖3是在本發明的優選實施例中實現的查找和替換操作的流程圖。當開 始(300 )查找和替換操作時,用戶通過查找和替換對話(122)的查找和替 換區域(221)鍵入(301)查找和替換對。被存儲在規則數據庫中的變換規 則被應用于(320)查找和替換對,以查找該對的變型形式并將其存儲在查找
和替換對數據庫(240)中(圖4中提供了對該步驟的更詳細描述)。搜索引 擎(270)搜索(330 )文本(121 ),以查找該查找和替換對數據庫(240)的 查找表達式的匹配。查找到的匹配被存儲在匹配數據庫(260)中。當查找到 所有匹配時,在匹配數據庫(260)中獲取的每個匹配(對4全驗341回答是) 在文本(121 )的對應部分中被查找和替換對話高亮。用對于該匹配的所有可 能的替換表達式(這是在查找和替換對數據庫(240)中查找到的查找和替換 對的替換成員)來填入(343 )替換控制區域(222),其中該查找和替換對數 據庫(240)的查找表達式與在步驟340中查找的匹配之一相同。收集(344)
選擇不替換(對檢驗345回答否),則讀取(340)新的匹配,并進行新循環 (342-346)直到在匹配數據庫中獲取了所有匹配(對檢驗241回答否)(結 束3卯)。如果用戶選擇替換(對檢驗345回答是),用用戶在步驟344中選 擇的替換表達式來替換(346)高亮的文本,然后在匹配數據庫中獲取下一匹配。
注意,存在本發明的其他實施例在圖3的流程圖所才是供的例子中,首 先收集(300-330)所有匹配,然后一旦存儲了所有匹配,則以特定次序將它 們顯示給用戶(340-390)。另外一種選項可以是顯示計算的結果。
顯示匹配的次序也是可變的。 一種優選選擇可以是對于每個不同的查找 表達式順序地顯示以同一查找表達式開始的所有匹配對。另外一種選擇可以 是以在文本中出現查找表達式的匹配的次序來顯示匹配對。使查找和替換操 作最容易的第三種可能性是提出在所有可能的替換變形形式中將成為替換變 形形式的第一用戶選擇對應于關于文本中的先前匹配的先前用戶選擇。
圖4詳細描述了應用圖3的變換規則(320)的步驟的可能實施例。該步 驟(320 )用于將被存儲在規則數據庫中的變換規則應用于查找和替換對,以 查找該對的變形形式。其在步驟310的執行之后開始(400),輸入由表達式 對組成,第一元素是查找表達式,并且第二元素是替換表達式。這些已經在 圖3的輸入查找和替換對(310)步驟期間由末端用戶提供作為在程序中執行 的命令(當對于用戶的界面是主動的時),或通過圖形用戶界面的查找和替換
對話(122)被提供。優選實施例的選項是使用圖形用戶界面(優選是常用編 輯器的圖形用戶界面)來與用戶對話。對話框包括查找和替換區和其他編輯 選項。屏幕的一部分專用于顯示編輯中的文本。在文本上逐漸地高亮由用戶
進行的所有操作。從規則數據庫(230)獲取(410)變換規則。當查找到規 則(對檢驗411回答是)時,通過步驟410獲取的當前變換規則被應用于(412 ) 在開始(400)處接收的查找表達式,并被應用于(413)在開始(400)處接 收的替換表達式。計算可能包括初始替換表達式的變形形式和初始替換表達 式的變形形式的得到的查找和替換對。"可能"包括變形形式的原因在于,在 語言的規則中,其中一種有可能是"不改變"。將"不改變"應用于初始查找 表達式和初始替換表達式(hello, bye)給出得到的對(hello, bye )。在這種 情況下,得到的對不包括變形形式,而是初始的表達式,如同用編輯器的基 本查找和替換功能一樣。
還注意,當將兩個規則連續應用于初始查找表達式(412)和初始替換表 達式時,意味著得到的對不是由在將第一和第二規則獨立地應用于查找表達 式和替換表達式時所獲得的所有笛卡兒積對(Cartesian product couple)組成。 相反,如以下例子所示,基于一個規則與其他規則獨立地計算派生對。為了 清楚,如果以用戶提供的初始對("hello", "bye")為例子,則當應用規則"不 改變"時獲得了一個派生對("hello", "bye"),并且當應用規則"大寫所有 字母"時獲得了一個派生對("HELLO", "BYE")。根據優選實施例的方法, 不認為當混合兩個規則時通過來自初始對的笛卡爾積而獲得的對("hello", "BYE")和("HELLO", "bye")是派生對。
將得到的查找和替換對存儲(414)在查找和替換對數據庫(240)中。 在規則數據庫中獲取(410)新的變換規則。如果沒有查找到更多規則(對檢 驗411回答否),則在查找和替換數據庫(240)中獲取(420)重復的查找和 替換對。 一個對是另一對的重復,如果且僅如果當基于逐個字符來比較字符 時,其查找表達式具有相同的長度并且等于第一對查找表達式,并且這對它 們的替換表達式同樣成立。如果可以查找到重復(對檢驗421回答是),則從 查找和替換對數據庫去除(422 )重復對。當不能查找到更多重復(對檢驗 421回答否)時,步驟320結束(430)。在該步驟的結束處,查找和替換對 數據庫(240 )包括與在給定了由用戶在步驟310鍵入的原始查找和替換對和 在規則數據庫(230)中指定的變換規則的情況下可以生成的一樣多的唯一的 查找和替換對。流程圖的結束(430)意味著將執行步驟330。
其他實施例可以實現不同的策略達到相同的效果。這些包括但不限于步 驟410中的選擇性插入,通過該選擇性插入,現有對將不被添加到該查找和 替換對數據庫或在重復消除之前的一種查找和替換對數據庫中。
圖5是使用圖形用戶界面的本發明的優選實施例的圖示。該圖像不是從 本發明的實施例中拍攝的真實屏幕捕獲,而是其已經使用圖像操縱工具來構 成。在該圖像上,在右側部分,呈現了在用戶和計算機之間的對話,示出了
由計算機提供給用戶的對于由用戶鍵入的給定查找和替換請求(查找hello, 替換hello world)的替換建議。圖像的左側部分呈現了編輯中的文本,并圖 示了由計算機提供給用戶的對于由用戶鍵入的給定查找和替換請求(查找 hello,替換hello world)的一些其他替換建議。在該例中,文本是Java源代 碼,編輯器是Java源代碼編輯器。
在圖像的右側部分示出了查找和替換對話。它包括輸入區域(501 ),用 于用戶鍵入查找表達式。這匹配圖2的查找和替換輸入區域(221)的部分, 其他部分如502而實現。它還可以在圖3的填入查找和替換對話步驟(343 ) 中起作用,因為它可以重做也在文本(210)中被高亮的當前匹配504。
第二輸入區域用于用戶鍵入替換表達式,下拉列表示出對于當前匹配的 所有可能的派生。這匹配了查找和提供輸入區域(221 )的部分,并實現了替 換控制區域(222)的核心性能。
如圖3和4的流程圖描述,當用戶已經鍵入查找和替換表達式時,計算 機將每個規則應用于查找和替換表達式,并根據規則來查找查找和/或替換表 達式的可能的派生形式。存儲與查找和替換計算的派生形式相對應的對應對。 然后,計算機在所存儲的對的查找部分的文本中查詢匹配,并用根據已經被 存儲的對的替換部分的建議替換部分來建立匹配的對。抑制了重復的查找和 替換對。然后,計算機在所存儲的對的查找部分的文本中查詢匹配,并存儲 匹配。然后,依次對于每個匹配,通過對話的同一查找和替換輸入區域(501, 502 )向用戶建議匹配的對的匹配的查找表達式和替換表達式。
在圖5的圖像的右側部分,用戶已經鍵入了查找"hello",并用"hello world"替換,且計算機已經建議了兩個匹配的對
-對應于規則:"不改變"的(hello, helloworld)
-對應于規則"大寫第二和隨后的詞并抑制空格"的(hello, helloWorld)。 用戶具有在替換區域(502 )中選擇根據第 一或第二規則的匹配的替換或
保持它不改變的機會。在該圖像中,"helloWorld"是高亮的,這意味著用戶
已經選擇了根據第二規則的匹配的替換。圖5的圖像的左側部分示出了編輯中的Java代碼。對應于由客戶鍵入的 輸入區域的同一查找(hello)和替換(hello world)值,計算機已經建議了對 應于規則"大寫所有詞并抑制空格"的匹配的對(Hello, HelloWorld) ( 503 )。
在文本中,匹配(504)被加灰以向用戶指示與初始查找詞或表達式的匹配。
返回圖像的右側部分,對話示出了查找和替換對話的其他傳統選項。通 過點擊"全字"復選框,用戶可以排除計算機建議匹配504。查找和替換實 施方式的該能力不專用于本發明的優選實施例,還給出其與先前存在的查找 和替換技術兼容的例子。
期望在本發明的優選實施例中使用的數據庫(規則230,查找和替換對 240,匹配260)具有相對少的元素,并且那些元素是短期存在的(典型地, 經過給定的查找和替換會話不再使用它們)。因此,本發明的實施例可以使用 這些數據庫的各種實施方式,從存儲器內的暫時列表到成熟數據庫中的記錄, 這取決于操作環境和期望的非功能需求(性能、存儲器臺面面積(footprint) 等等)。
注意,可以將"表達式"和"變形形式"的含義一般化,因為一個人可 能認為作為至少一個詞的表達式可以僅對應于一個詞。類似地,如果規則是 "不改變",則規則可允許的初始查找表達式和初始替換表達式的變形形式可 以是相同的初始查找表達式和初始替換表達式。
權利要求
1.一種用于進行文本的查找和替換編輯操作的方法,所述方法包括-收集包括由用戶提供的初始查找表達式和初始替換表達式的表達式對;-對于定義了所述初始查找表達式和所述初始替換表達式的可允許變形形式的每個規則,讀取所述規則,將所述規則應用于所述初始查找表達式并將所述規則應用于所述初始替換表達式,以獲得由所述初始查找表達式的變形形式和所述初始替換表達式的變形形式形成的派生對;-對于在先前步驟中計算的所有派生對的查找表達式,在文本中標識匹配;-對于在先前步驟中標識的每個匹配,向用戶提供以匹配的查找表達式作為查找表達式的每個派生對的匹配的查找表達式和替換表達式。
2. 根據權利要求1所述的方法,還包括每次僅為用戶提供一個派生對、其中對于該一個派生對已經在文本中標 識了匹配時,用所述一個對的替換表達式進行文本中的替換功能。
3. 根據權利要求1或2所述的方法,還包括每次為用戶提供多于一個派生對、其中對于該多于一個派生對已經在文 本中標識了匹配時,從用戶收集在被提供給用戶的所述多于一個派生對中的一個對;以及,用從用戶收集的對的替換表達式進行文本中的替換功能。
4. 根據權利要求1到3所述的任意一項的方法,還包括在第一存儲部件 中存儲定義了查找表達式和替換表達式的可允許變形形式的規則的初始步 驟;以及,所述讀取所述規則的步驟包括 從所述存儲部件中讀取所述規則。
5. 根據權利要求1到4的任意一項所述的方法,還包括 在第二存儲部件中存儲從所述初始查找表達式和所述初始替換表達式派生的所有對;所述標識步驟包括從所述第二存儲部件讀取所有派生對;以及,所述向用戶提供以匹配的查找表達式作為查找表達式的派生對的匹配的查找表達式和替換表達式的步驟包括從所述第二存儲部件讀取所述派生對。
6. 根據權利要求1到5的任意一項所述的方法,還包括在第三存儲部件中存儲在搜索所述匹配的步驟中查找到的、文本中的所 有匹配;以及,所述向用戶提供以匹配的查找表達式作為查找表達式的派生對的匹配的 查找表達式和替換表達式的步驟包括從所述第三存儲部件讀取所述匹配的查找表達式。
7. 根據權利要求6所述的方法,其中,在第三存儲部件中存儲的步驟還 包括存儲包括匹配在文本中的位置和匹配的字符串的寬度的、文本中的匹配 的索引,其中對該索S1添加匹配的查找表達式的標識符。
8. 根據權利要求1到7的任意一項所述的方法,其中通過具有顯示部分 文本的區域的圖形用戶界面來進行從用戶收集并向用戶提供的步驟,其中對 所述文本進行查找和替換編輯操作,所述圖形用戶界面還具有顯示所述查找 表達式的區和顯示替換表達式的區,所述表達式由用戶鍵入或被提供給用戶。
9. 根據權利要求1到7的任意一項所述的方法,其中通過執行包括命令 的程序來進行從用戶收集和向用戶提供的步驟。
10. 根據權利要求1到9的任意一項所述的方法,其中以在文本中標識 匹配的次序進行向用戶提供的步驟。
11. 根據權利要求1到9的任意一項所述的方法,其中,以在派生對中 的不同的匹配的查找表達式的次序進行向用戶提供的步驟。
12. 根據權利要求1到11的任意一項所述的方法,其中將所述規則應用 于所述初始查找表達式和將所述規則應用于所述初始替換表達式的步驟還包括抑制重復的可能的對。
13. —種計算機程序產品,包括用于在計算機上執行所述程序時執行根 據權利要求1到12的任意一項的方法的步驟的編程代碼指令。
14. 一種系統,包括適用于實現根據權利要求1到12的任意一項的方法 的部件。
全文摘要
一種方法、計算機程序和系統,用于對從由用戶提供的一對初始的查找和替換的表達式開始的文本進行查找和替換編輯操作、將定義了初始的查找表達式和初始的替換表達式的可允許的變形形式的每個規則應用于初始的查找和替換的表達式,以標識對于規則來說有效的查找表達式和替換表達式的所有派生對。派生對的查找表達式和替換表達式對應于初始的查找和替換表達式的變形形式。然后,對于派生對的查找表達式的文本中的每個匹配,向用戶建議文本中用于替換的派生對。通過文本編輯器的常用圖形用戶界面或通過基于文本的終端用戶界面來作為用戶界面。查找和替換操作可以通過執行包括查找和替換命令的程序而主動進行,或可以通過在程序執行期間詢問用戶以給出他的選擇來交互進行。
文檔編號G06F17/24GK101346716SQ200680048978
公開日2009年1月14日 申請日期2006年10月27日 優先權日2005年12月22日
發明者馬克西姆·丹尼爾 申請人:國際商業機器公司