Regex 从右到左

Regex 从右到左,regex,Regex,把这根绳子 THX1138: The Movie 通过这个正则表达式 (.)(.)(\d)(\d+) 与此匹配 HX1138 通过在比赛中省略T,它似乎从右向左移动,但我认为默认值是从左向右。例如,有很多人问如何使正则表达式从右向左移动,所以我认为默认值是从左向右。通过添加另一个 (.)(.)(.)(\d)(\d+) 相配 THX1138 确认从右向左观察。那么,如果有多个捕获组,它在第一次捕获后从右向左移动,这是一条规则吗 让我们把它们分解一下 ..\d\d+ :匹配任何单个字符 :

把这根绳子

THX1138: The Movie
通过这个正则表达式

(.)(.)(\d)(\d+)
与此匹配

HX1138
通过在比赛中省略T,它似乎从右向左移动,但我认为默认值是从左向右。例如,有很多人问如何使正则表达式从右向左移动,所以我认为默认值是从左向右。通过添加另一个

(.)(.)(.)(\d)(\d+)
相配

THX1138
确认从右向左观察。那么,如果有多个捕获组,它在第一次捕获后从右向左移动,这是一条规则吗

让我们把它们分解一下

..\d\d+

:匹配任何单个字符 :匹配任何单个字符 \d:匹配任何一个数字 \d+:匹配一个或多个数字

在字符串THX1138中移动:电影从左到右,前三个字符无法匹配,因为X不是数字。因此,它向前移动一个字符,并找到一个匹配项:H和X匹配“任意单个字符”的要求,1匹配“任意单个数字”,并且“138”被混入最后的\d+

…\d\d+

:匹配任何单个字符 :匹配任何单个字符 :匹配任何单个字符 \d:匹配任何一个数字 \d+:匹配一个或多个数字

现在,当它从左到右遍历字符串时,它会立即找到一个匹配项,因为T、H和X都匹配“任意一个字符”,并且再一次,1匹配“任意一个数字”,并且138会被转换成最后的\d+

让我们把它们分解

..\d\d+

:匹配任何单个字符 :匹配任何单个字符 \d:匹配任何一个数字 \d+:匹配一个或多个数字

在字符串THX1138中移动:电影从左到右,前三个字符无法匹配,因为X不是数字。因此,它向前移动一个字符,并找到一个匹配项:H和X匹配“任意单个字符”的要求,1匹配“任意单个数字”,并且“138”被混入最后的\d+

…\d\d+

:匹配任何单个字符 :匹配任何单个字符 :匹配任何单个字符 \d:匹配任何一个数字 \d+:匹配一个或多个数字

现在,当它从左到右遍历字符串时,它会立即找到一个匹配项,因为T、H和X都匹配“任意一个字符”,并且再一次,1匹配“任意一个数字”,并且138会被转换成最后的\d+


问题是,THX1138无法匹配..\d\d+是否从捕获的T开始。regex引擎并没有失败匹配,而是返回两个匹配项的唯一匹配项,不管后面是否跟有至少两个数字,即aka,HX1138

问题是,THX1138无法匹配..\d\d+是否从捕获的T开始。regex引擎并没有失败匹配,而是返回唯一匹配的两个数字,后面至少有两个数字,aka,HX1138

它没有从右向左移动。它只是在整个输入过程中寻找您的模式,即从左到右。如果在索引0处未找到匹配项,则它将前进到input.substr1,然后再前进到input.substr2,依此类推。它不会从右向左移动。它只是在整个输入过程中寻找您的模式,即从左到右。如果在索引0处找不到匹配项,则它将前进到input.substr1,然后再前进到input.substr2,依此类推。谢谢,perreal比你领先了一分钟,所以我接受了他的答案,但投了你一票too@BrainLikeADullPencil当前位置我比他领先一分钟。。。49 > 48. 但不管怎样。hehthanks perreal赢了你一分钟所以我接受了他的回答但投了你一票too@BrainLikeADullPencil当前位置我比他领先一分钟。。。49 > 48. 但不管怎样。hehflimzy赢了你一分钟,所以我接受了他的答案,但投了你一分钟的高票。hehflimzy赢了你一分钟,所以我接受了他的答案,但投了你一分钟的高票