2009-06-26 43 views
5

MSVS:哪裏的正則表達式?

我有我試圖以配合2008年MSVS正則表達式的代碼,但我想不通的正則表達式吧。以一個典型的例子:Visual Studio Regex'?'

colou?r 

...這是一個正則表達式匹配colorcolour。這在MSVS中都不匹配。參考幫助文件,我找不到?

這不會是一個大問題 - 它可以交替進行仿真:

colo(u|)r 

不過,我得到......這是......不是「分組表達式中缺少‘)’。」 。奇怪的是,MSVS具有這些交替組(我真的不知道爲什麼...)用大括號:「在模式語法錯誤」

colo{u|}r 

這給了我的完全不同的錯誤...其中,我沒看到一個。 基本上,我該如何做一個??我的實際輸入不像顏色/顏色那麼簡單,否則我只是用(color|colour)來僞造它。我想可以假裝它,但這是一個愚蠢的做法。


讓我們嘗試交替然後...

好吧,我現在還不能做到這一點,即使交替。我有以下兩個正則表達式:

 
^[A-Z]+\t[0-9]+\t[^\t]+ 

^[A-Z]+\t[0-9]+\t[^\t]+\t[^\t]+ 

那兩個匹配兩組行匹配,分別是我的文本。 (第一個匹配匹配第二一個的線的一部分。)

我的輸入是貨幣信息線:

 
BZD 084 Belize dollar 
CAD 124 Canadian dollar 
CDF 976 Franc Congolais 
CHE 947 WIR euro (complementary currency) 
CHF 756 Swiss franc 
CHW 948 WIR franc (complementary currency) 
CLF 990 Unidad de Fomento (funds code) 

(有翼片,例如,WIR歐元和(互補貨幣之間),但他們並不總是存在。)

從邏輯上講,應該遵循以

 
^[A-Z]+\t[0-9]+\t[^\t]+ 

^[A-Z]+\t[0-9]+\t[^\t]+\t[^\t]+ 

..你得到結合... ^ [AZ] + \ t [0-9] + \ t([^ \ t] + | [^ \ t] + \ t [^ \ t] +) ......這似乎是等同的到第一組中的第二個表達式。

+0

Visual Studio中的正則表達式是什麼意思?你在寫什麼語言? – 2009-06-26 19:53:54

+2

@John Rasch:他意味着在Visual Studio的查找/替換窗口。 – Welbog 2009-06-26 19:55:50

+0

@Welbog - 好吧現在有意義吧 – 2009-06-26 20:05:35

回答

4

我們自己的Jeff Atwood寫了一段時間回來。基本上,Visual Studio的正則表達式實現非常不規範,並且沒有簡單的方法來執行'?'通常完成的操作。你必須使用你的{colour|color}表達式。

0

Visual Studio中的正則表達式查找不支持?請參閱MSDN上的reference。您最好的選擇可能是交替字符

0

這工作:

colo(u)|()r 

你真實的例子,這將匹配每一行:

^[A-Z]+:b[0-9]+:b[^\t]+(\t[^\t]+)|() 
0

你嘗試到的最長的共同路徑對?

例如,對於顏色和顏色將是:

colo(ur|r) 

和爲貴2的正則表達式將是:

^[A-Z]+\t[0-9]+\t{[^\t]+|[^\t]+\t[^\t]+} 
1

雖然沒有記錄,我發現字符串「()」將匹配空字符串。例如:

colo(u|())r 

同樣,嘗試

^[A-Z]+\t[0-9]+\t{[^\t]+(\t+[^\t]+|())} 

與去年的情況下,一定要放最後,避免受到部分匹配,或一定要釘在一個空字符串替代結束標記'$'也是如此。

相關問題