2009-06-26 98 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]+|())} 

与去年的情况下,一定要放最后,避免受到部分匹配,或一定要钉在一个空字符串替代结束标记'$'也是如此。