2016-12-23 62 views
-1

我正在尋找正則表達式的幫助。我有一個項目,我正在編寫一個VBA宏,通過查找/替換一個短語來更新數十萬個文檔。該短語是「公司名稱」,並且需要是「Company Name LLP」。問題是,通過查找/替換,如果以前更新過,我無法阻止「公司名稱」有限責任合夥公司「變爲」公司名稱有限責任合夥公司「(兩家有限責任合夥公司)。我的解決方法是找到「LLP LLP」並替換爲「LLP」,但顯然使用正則表達式更好。我想要一個正則表達式,可以找到所有「公司名稱」還沒有「Company Name LLP」(甚至更好的是它也會用逗號排除「Company Name,LLP」)。任何人都可以請幫助我建立這個正則表達式? TIA!找到尚未更新的短語的正則表達式

+2

使用'公司名稱(?!\ S + LLP)' –

+0

嗨Wiktor的,謝謝你的快速回復!有沒有辦法讓它不區分大小寫,以便找到「公司名稱」? – JBHorne

+0

你可以設置正則表達式對象的大小寫敏感性。 –

回答

1

你可以使用一個(?!\s+LLP)負先行,以避免匹配Company Name之前1+空格和LLC字:

Company Name(?!\s+LLP) 

如果這些是整個單詞,則用字邊界:

\bCompany Name\b(?!\s+LLP\b) 

要使表達式不區分大小寫,在RegExp對象上啓用不區分大小寫的模式。

例子:

Set myRegExp = New RegExp 
myRegExp.IgnoreCase = True 'Here, case insensitive mode is ON 
myRegExp.Global = True 
myRegExp.Pattern = "\bCompany Name\b(?!\s+LLP\b)" 
+0

謝謝。我現在試圖排除「公司名稱,LLP」(用逗號)。我正在使用「\ bCompany&Name \ b(?!\ s + LLP | \,LLP \ b)」。這是最好的方法還是有更優雅的方式?我對這裏的正則表達式很陌生...... 最後,有沒有辦法找到「Company&Name」或「Company and Name」?我試過:「\ bCompany(&|和Name \ b」,但中間的圓括號產生另一個匹配。 – JBHorne

+0

有一個更好的''(?!,?\ s + LLP \ b)',並且要匹配'和'和'&',請使用'(?:和|&)'。 '\ bCompany \ s +(?:和|&)\ s +名稱\ b(?!,?\ s + LLP \ b)' –

+0

Wiktor,您好,真棒。這會花費我很長時間才能弄清楚。我最後的正則表達式是: \ bCompany(?:和|&)Name \ b(?!,?\ s + LLP \ b) 謝謝! – JBHorne