我需要将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需要一段时间,我需要快速完成转换。
答案 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非常擅长正则表达式:)