/^\s*((?:[^:\s]*?:)?)/

/^\s*((?:[^:\s]*?:)?)/

/^\s*((?:[^:\s]*?:)?)/
/^\s*((?:[^:\s]*?:)?)/ 

有点不解, 第一个 和第二个? 是啥意思,前面好像没有前导字符啊,

例如说第一个? 前面是(  它修饰的难道是(   好像不对吧
第二个? 前面是*   *修饰的是[^:\s]   为什么还来个修饰符? 


另外就是有括号的嵌套, 到底那一个算匹配的内容(返回作为列表元素)




   

第一个表示只群集 不捕获。第二个应该才是正常含义。
第一个?是 ?: ,放在( 后面,表示不捕获
第二个?修饰前面的*为最小匹配
第三个?是表示匹配一次或零次的量词