2009-02-27 54 views
0

是否有任何相对简单的方法来识别正则表达式模式为简单文本或规则?正则表达式是简单的文本还是规则?

一个例子。 @"[A-Z0-9]" - 是一个规则,而@"\\[A-Z0-9\\]"是一个普通的简单文本(C#字符串语法)

+0

请详细说明一下,这个问题对我来说听起来还不太清楚。 – 2009-02-27 14:08:37

+0

这听起来还不清楚。 – Swanand 2009-02-27 14:10:30

回答

1

缺少检测'['即逃脱正则表达式字符,我想不出任何东西离开我的头顶。

由于使用@复制字符串字面逐字尝试 -

1.Finding每一个 '['/ '*'/ '+'/ '所有其他正则表达式charachters',并确保以前的charachter是“\ ”。

2.另一种方式可能是编写一个语法/正则表达式来检查它。我认为你需要一个语法。在任何情况下(1)都比较简单。

一些字符串方法可能有助于检查上述内容(如IndexOf ...)。

在任何情况下,正则表达式只是一个字符串,除非和直到它被编译和使用。我仍然不知道你为什么要这样做。如果你想确保一个正确的正则表达式,那就容易了。 (我不知道C#特定的方式 - 参见Svish的答案)。

注意
1.A正则表达式始终是一个规则,因为正则表达式“XYZ”是一个规则始终匹配“XYZ”孤独和不匹配其他任何东西。

我希望这会有所帮助。

0

你是什么意思?正则表达式总是写成一个字符串。不管你如何编写字符串,它总是一个字符串。

如果你想检查一个字符串,另一方面有效的正则表达式(如果这是你所要求的),你总是可以做到这一点:

try 
{ 
    new Regex(someRegexString); 
} 
catch(ArgumentException) 
{ 
    // Regular expression parsing error. I.e: Not a valid regular expression. 
} 

现在,如果你想使用正则表达式字符串,您可以将其用作字符串或作为正则表达式。将它用作字符串就像...将它用作字符串...将它用作正则表达式意味着创建一个Regex对象(或使用Regex的某些静态方法)。如果你随后使用它,或者替换文本,或者提取东西,或者其他任何东西,那都不会改变任何东西。正则表达式仍然是一个正则表达式。