我很困惑为什么.NET RegexOptions.RightToLeft
导致\w
和\W
令牌的行为不同。
例如,使用带有输入(\d{1,7})\w?
的正则表达式500
会为打开或关闭RegexOptions.RightToLeft
的第一个组生成两个不同的捕获。启用它后,结果为50
,并将其关闭500
。使用正则表达式(\d{1,7})\s?
,无论如何都会得到500
。这是一个错误还是我误解了什么?
答案 0 :(得分:0)
这与我确定的顺序或贪婪有关。当您从右到左匹配时,\w?
成为第一部分并且贪婪地匹配0
,只留下50
以匹配\d
。从左到右\d{1,7}
是贪婪的并且匹配所有3位数字,\w
没有留下任何内容,但由于?
而没有问题。 0不是空格,因此\s
匹配不受此影响。