VB6和C#正则表达式

时间:2012-10-10 13:47:19

标签: regex c#-4.0 vb6 vb6-migration

我需要将VB6(我不熟悉的)项目转换为C#4.0。该项目包含一些用于字符串验证的正则表达式。

我需要知道正则表达式在两种情况下的行为是否相同,所以如果我只是将正则表达式字符串从VB6项目复制到C#项目,它们的工作方式是否相同?

我对正则表达式有一个基本的了解,我只能读一下它的作用,但对于口味等等,我现在有点过头了。

例如,这2行是等效的吗?

VB6:

isStringValid = (str Like "*[!0-9A-Z]*")

C#:

isStringValid = Regex.IsMatch(str, "*[!0-9A-Z]*");

谢谢!

2 个答案:

答案 0 :(得分:9)

旧的VB Like运算符尽管有外观,但它不是正则表达式接口。它更像是一个glob模式匹配器。见http://msdn.microsoft.com/en-us/library/swf8kaxw.aspx

在你的例子中:

Like "*[!0-9A-Z]*"

匹配以任何字符(零个或多个)开头和结尾的字符串,然后 匹配中间某处的字母数字字符。这个的正则表达式是:

/.*[^0-9A-Z].*/

编辑回答你的问题:不,这两者不能互换使用。但是,将Like的操作数转换为正确的正则表达式相当容易:

Like       RegEx
========== ==========
?          .
*          .*
#          \d
[abc0-9]   [abc0-9]
[!abc0-9]  [^abc0-9]

对此有一些警告,但这应该让你开始并涵盖大多数情况。

答案 1 :(得分:-1)

总之,是的。

这些都是一样的。一些快速的谷歌搜索可以为您提供更复杂问题的答案。

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/bce145b8-95d4-4be4-8b07-e8adee7286f1/

http://www.regular-expressions.info/dotnet.html