.NET等同于Perl正则表达式

时间:2010-05-19 07:04:46

标签: .net regex perl

我需要将Perl脚本转换为VB.NET。我已经管理了几乎整个转换,但一些Perl(看似简单)的正则表达引起了头痛。有人可以建议我使用.NET相当于以下perl正则表达式:

1)

$letter =~ s/Users //,;
$letter =~ s/Mailboxes //,;
if($letter =~ m/$first_char/i){

2)

unless($storegroup =~ /Recovery/ || $storegroup =~ /Users U V W X Y Z/ || $storegroup =~ /Users S T/
    || $storegroup =~ /Users Q R/){

正则表达式看起来很简单。我试图通过perl.org跋涉,但是理解一个langugae regex需要一段时间,我需要快速完成转换。

2 个答案:

答案 0 :(得分:3)

在Perl中,您可以将斜杠视为双引号,并添加“在这些斜杠之间是一个正则表达式字符串”的含义。第一个代码块是Perl查找/替换正则表达式:

$stringvar =~ s/findregex/replaceregex/;

使用findregex并将其替换为replaceregex,就地。给出的示例是一个非常简单的搜索,.net Regex类将是过度的。 String.Replace()方法将完成这项工作:

letter = letter.Replace("Users ", "")
letter = letter.Replace("Mailboxes ", "")

第二部分是仅用于查找的Perl,如果找到findregex字符串则返回true,保持实际字符串本身不变。

$stringvar =~ /findregex/;

String.Contains()可以在.net中处理此问题:

if (!(storegroup.Contains("Recovery") _
   or storegroup.Contains("Users U V W X Y Z") _
   or storegroup.Contains("you get the idea"))) Then 
    ...

(对不起,如果我的VB有点生疏,但希望这有帮助)

答案 1 :(得分:0)

$letter =~ s/Users //,;
$letter =~ s/Mailboxes //,;
if($letter =~ m/$first_char/i){

- >

letter = letter.Replace("Users ", "");
letter = letter.Replace("Mailboxes ", "");
//next one depends on what $first_char is

unless($storegroup =~ /Recovery/ || $storegroup =~ /Users U V W X Y Z/ || $storegroup =~ /Users S T/
|| $storegroup =~ /Users Q R/){

- >

if (!(storegroup.Contains("Recovery") || storegroup.Contains("Users U V W X Y Z") ...and so on...))

在这里使用正则表达式的唯一理由是因为Perl非常擅长正则表达式:)