Regex RightToLeft' \ w'匹配与默认不同

时间:2015-05-27 01:32:19

标签: .net regex

我很困惑为什么.NET RegexOptions.RightToLeft导致\w\W令牌的行为不同。

例如,使用带有输入(\d{1,7})\w?的正则表达式500会为打开或关闭RegexOptions.RightToLeft的第一个组生成两个不同的捕获。启用它后,结果为50,并将其关闭500。使用正则表达式(\d{1,7})\s?,无论如何都会得到500。这是一个错误还是我误解了什么?

1 个答案:

答案 0 :(得分:0)

这与我确定的顺序或贪婪有关。当您从右到左匹配时,\w?成为第一部分并且贪婪地匹配0,只留下50以匹配\d。从左到右\d{1,7}是贪婪的并且匹配所有3位数字,\w没有留下任何内容,但由于?而没有问题。 0不是空格,因此\s匹配不受此影响。