正则表达式--条件分支小记
只有当在字符串中的同一个位置存在两个选择分支同时匹配的时候,正则式中的选择分支的顺序才有意义。例如,正则式‹Jane|Janet›在匹配目标文本Her name is Janet的时候,就会有两个选择分支在同一位置出现匹配。在此正则表达式中并不存在单词边界。事实上,‹Jane›是否只匹配到Her name is Janet中的单词Janet的一部分并不重要。
‹Jane|Janet›之所以会匹配到Her name is Janet中的Jane,是因为一个正则制导的正则表达式引擎是遵循“浅尝辄止”的工作原则的(eager)。除了会从左向右扫描目标文本,查找最左匹配之外,它还会从左向右扫描正则式中的选择分支。而一旦它找到一个匹配的选择分支,正则引擎就会立即停止。
当‹Jane|Janet›到达了Her name is Janet中的J的时候,第一个选择分支‹Jane›,成功匹配。第二个选择分支则根本没有进行尝试。如果我们告诉引擎接着查找下一个匹配的话,这时候在目标文本中剩下的只有t。此时两个选择分支都不能成功匹配。
以上摘自异步社区
分支条件
又叫逻辑运算符,在此X
和Y
表示两个表达式
XY
X紧跟YX|Y
表示X或Y,从左到右,满足第一个条件就不会继续匹配了。
以上摘自w3cschool
X|Y匹配XY时会有X,Y两个结果。只有当某个位置既能被X匹配上又能被Y匹配上时,才会出现一个结果,就是条件分支中较前的结果。w3cschool上的解释太模糊了,差评。