在RegexParser.ScanRegex()上获得例外

时间:2017-01-28 11:10:34

标签: c# regex

你好,我有这个正则表达式模式,我已经在regex101上进行了测试,它可以正常工作。

((der|die|das)\ .*?),.*+\n.*\n(.*?)\n

我在这一行得到了例外:

Regex regex = new Regex(@"((der|die|das)\ .*?),.*+\n.*\n(.*?)\n");

出了什么问题?

2 个答案:

答案 0 :(得分:3)

Regex有不同的风格,由不同的正则表达式引擎实现。 Regex101允许您使用PCRE或JavaScript。 .NET实现了自己的正则表达式引擎,具有不同的功能。

在您的情况下,.NET支持possessive quantifier语法// parents function Parent1() { this.parent = 'Parent1'; } function Parent2() { this.parent = 'Parent2'; } // child function Child1() { Parent1.call(this); this.child = 'Child1'; } Child1.prototype = Object.create(Parent1.prototype); // child method as sub class Child1.prototype.SubClass1 = function(){ Parent2.call(this); this.sub_class = 'SubClass1'; }; Child1.prototype.SubClass1.prototype = Object.create(Parent2.prototype); Child1.prototype.SubClass1.prototype.whoami = function(){ // how to get Child1 reference in this point? console.log({ parent: this.parent, child: this.child, // undefined sub_class: this.sub_class }); }; var child = new Child1; var sub = new child.SubClass1; sub.whoami(); ,但它只是一个语法糖,所以您可以用等效的atomic group.*+

请注意,此正则表达式中的此特定项目在此处显示可疑,因此可能只需删除(?>.*)

答案 1 :(得分:0)

在“ + \ n。

之后没有+的情况下尝试一下
Regex regex = new Regex(@"((der|die|das)\ .*?),.*\n.*\n(.*?)\n");

是嵌套量词

+ The plus sign indicates one or more occurrences of the preceding element.
* The asterisk indicates zero or more occurrences of the preceding element.