为什么C#和Perl的正则表达式结果不同?

进步

下面的C#代码是我将Perl代码重新创建为C#。它是相同的正则表达式,但结果不同。Perl代码被捕获为“ a”,而C#代码被捕获为“ apple”。是什么使它与众不同?

C#代码

string word = Regex.Replace("apple", "(?<C>a(?=pple)|b(?=anana)|c(?=herry))", "${C}");

Console.WriteLine("fruit\'s initial: {0}", word); // result: "fruit's initial: apple"

Perl代码

my $word = 'apple';

if ($word =~ /(?<C>a(?=pple)|b(?=anana)|c(?=herry))/) {
print "fruit\'s initial: $+{C}"; // result: "fruit's initial: a"
}
维克多·史翠比维

在Perl中,您匹配并捕获了第一个,a然后将其捕获pple到“ C”组中,然后进行了打印。在C#中,您更换a注视着pplea,得到了apple不变的结果。

改用匹配:

var m = Regex.Match("apple", "(?<C>a(?=pple)|b(?=anana)|c(?=herry))");
if (m.Success)
{
    Console.WriteLine("fruit\'s initial: {0}", m.Groups["C"].Value);
}

参见C#演示

在此,将正则表达式匹配分配给m变量。如果发生匹配(if (m.Success)),则可以使用来获取“ C”组值m.Groups["C"].Value

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么javascript和python中有不同的正则表达式结果?

为什么Java和Perl中的正则表达式行为不同?

为什么此正则表达式在Python和Javascript中给出两个不同的结果?

为什么此正则表达式代码在Python 2.7和Python 3.7中会有不同的结果?

正则表达式文字和正则表达式对象的结果不同

为什么需要括号才能将正则表达式的结果保存在Perl中?

为什么相同的正则表达式会给出两个不同的结果?

为什么Perl正则表达式挂起?

在 C# 中使用相同的正则表达式模式获得不同的结果

为什么LF和CRLF在/ ^ \ s * $ / gm正则表达式中表现不同?

使用C ++正则表达式和太慢的结果

为什么在线测试的正则表达式在C ++中表现完全不同?

为什么不同的GCC 4.9.2安装为此正则表达式匹配提供不同的结果?

为什么在ubuntu和Windows上使用Text.Regex.Posix时正则表达式匹配结果不同,这是一个错误吗?

为什么Perl正则表达式捕获组在`print`和arithmentic运算之间的行为会有所不同?

什么是C#正则表达式,等效于Java的appendReplacement和appendTail

Perl awk正则表达式与标准正则表达式不同吗?

正则表达式C#

在python正则表达式中,为什么(h)*和(h)+不能产生相同的结果?

正则表达式可划分数学和逻辑表达式C#

Perl中替换正则表达式的意外结果

为什么pcre正则表达式比c ++ 11正则表达式快得多

为什么用Java 8和Java 9之间的正则表达式确实\ r行为不同?

为什么Java中的正则表达式在不同的示例中表现不同?

为什么 Javascript 的 regex.lastIndex 对于不同的正则表达式表现不同?

正则表达式javascript结果与预期不同

具有不同结果的正则表达式

Powershell正则表达式与“其他”正则表达式有什么不同?

正则表达式 - 为什么这两个表达式不会产生相同的结果?