sml中正则表达式的输出

sml中正则表达式的输出,sml,Sml,在以下表达式中查找长度小于6的所有输出有一个问题: (a+b | ba+)。 有19个输出,我可以找到其中的一部分 但我不知道为什么“abba,baab,aabab,abab,baab,abbaa,baba,babaa”是答案的一部分。以下是一些例子,可以帮助您了解其余的问题: abba:ab来自第一部分(一个或多个a后接b),而ba来自第二部分(一个b后接一个或多个as) 巴布:类似 babaa:babaa来自第二部分(因为您可以拥有一个或多个组,因为最后的+) 但是在左和右之间有“|”。它

在以下表达式中查找长度小于6的所有输出有一个问题: (a+b | ba+)。 有19个输出,我可以找到其中的一部分


但我不知道为什么“abba,baab,aabab,abab,baab,abbaa,baba,babaa”是答案的一部分。

以下是一些例子,可以帮助您了解其余的问题:

  • abba:
    ab
    来自第一部分(一个或多个
    a
    后接
    b
    ),而
    ba
    来自第二部分(一个b后接一个或多个
    a
    s)
  • 巴布:类似
  • babaa:
    ba
    baa
    来自第二部分(因为您可以拥有一个或多个组,因为最后的
    +
但是在左和右之间有“|”。它的意思是“或”。为什么它可以组合在一起而不是选择其中一个?而且()的优先级高于最右边的“+”。它必须计算()中的内容,然后对结果应用“+”