2010-07-16 42 views
1

我在写一个使用正则表达式来匹配传入数据的程序。正则表达式适用于我正在编写的计算机上,但它不适用于我正在测试的客户端计算机。它可以在我的电脑上以调试模式,释放模式运行,并直接从箱中运行。什么可能使正则表达式工作不同?正则表达式在不同的计算机上的工作方式不同

正则表达式:

const string _pattern 
    = @"^(?:\x02)?([A-Z])(ST)([WS])([1-9])([ AM])([ NSEWIO])([- ]\d{6})([ M])([1CPN])(\w)?(?:\x0D)?$"; 
static readonly Regex _regex 
    = new Regex(_pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled); 

字符串:

@"ASTS2MI-000020 C0" 
+1

可执行文件在两台机器上的版本是否完全相同? – 2010-07-16 16:04:13

+1

是的,可执行文件。但是这让我想到了......我意识到正则表达式在*库*中,这是不一样的。我将它们切换出来,它工作得很好。 ** D'oh ** – dlras2 2010-07-16 16:13:11

回答

6

也许你需要CultureInvariant:

static readonly Regex _regex 
    = new Regex(_pattern, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled); 

截至Performing Culture-Insensitive Operations in the RegularExpressions Namespace解释的,默认情况下将t不区分大小写的匹配考虑了Thread.CurrentCulture

+0

从技术上讲,这不是我的问题,但对我的问题来说这是一个很好的答案。 – dlras2 2010-07-16 16:14:05