Regex 为什么这个正则表达式匹配true和false?
我不小心把括号漏掉了Regex 为什么这个正则表达式匹配true和false?,regex,Regex,我不小心把括号漏掉了 /true | false/ 但是成功了!据我所知,a|表示“前面的模式或后面的模式”,因此e或f,或与/tru(e | f)alse/等效的模式。后来我注意到了我的错误,但感到困惑。这不应该只匹配truealse和trufalse?然后,我做了更多的测试,发现它也与这些匹配为什么会匹配true,false,truealse,以及truflse? 小提琴:前面的模式是当前组中前面的所有内容。因此,true是前面的模式,false是后面的模式 如果您实际上只想匹配trufl
/true | false/
但是成功了!据我所知,a|
表示“前面的模式或后面的模式”,因此e
或f
,或与/tru(e | f)alse/
等效的模式。后来我注意到了我的错误,但感到困惑。这不应该只匹配truealse
和trufalse
?然后,我做了更多的测试,发现它也与这些匹配为什么会匹配true
,false
,truealse
,以及truflse
?
小提琴:前面的模式是当前组中
前面的所有内容。因此,true
是前面的模式,false
是后面的模式
如果您实际上只想匹配truflse
和truealse
,则可以使用tru(e | f)alse
围绕
建立一个分组
至于它为什么匹配truealse
:它匹配true
,因为您没有指定任何锚。因此,它将匹配任何包含true
或false
的字符串。前面的模式是当前组中|
前面的所有内容。因此,true
是前面的模式,false
是后面的模式
如果您实际上只想匹配truflse
和truealse
,则可以使用tru(e | f)alse
围绕
建立一个分组
至于它为什么匹配
truealse
:它匹配true
,因为您没有指定任何锚。因此,它将匹配其中包含true
或false
的任何字符串。要添加到这一点:tru(e | f)alse
中的捕获组将捕获e
或f
,具体取决于输入字符串。如果您只想执行分组而不想捕获,那么可以使用非捕获组:tru(?:e | f)alse
@AmalMurali:捕获/非捕获组在某种程度上依赖于方言。因为OP没有指定方言,所以我不想解释它。(不过,感谢您的澄清!)要补充的是:tru(e | f)alse
中的捕获组将捕获e
或f
,具体取决于输入字符串。如果您只想执行分组而不想捕获,那么可以使用非捕获组:tru(?:e | f)alse
@AmalMurali:捕获/非捕获组在某种程度上依赖于方言。因为OP没有指定方言,所以我不想解释它。(不过,感谢您的澄清!)