字串和文字處理-2.1 使用多個分隔符號分割字串

Photo by Amie Bell on Unsplash

Q:你需要將一個字串分割為多個字串,但是分隔符號並不是單一固定的。

Answer

string物件的split()方法只適用於簡單的字串分割情況,它並不允許有多個分隔符號或是分隔符號前後有不確定數量的空格。當你需要更加靈活的分割字串時,就需要使用模組re正規表達式來進行判斷。

Discuss

函數 re.split() 是非常實用的,因爲它允許你爲分隔符號指定多個正則模式。比如, 在上面的例子中,分隔符可以是逗號(,),分號(;)或者是空格( ),並且後面緊跟着任意個的空 格。只要這個模式被找到,那麼匹配的分隔符兩邊的實體都會被當成是結果中的元素返回。返回結果爲一個字段列表,這個跟 str.split() 返回值類型是一樣的。

當你使用 re.split() 函數時候,需要特別注意的是正則表達式中是否包含一個括號捕獲分組。如果使用了捕獲分組,那麼被匹配的字串也將出現在結果列表中。

獲取分割字符在某些情況下也是有用的。比如,你可能想保留分割字符串,用來在 後面重新構造一個新的輸出字符:

如果你不想保留分割字串到結果列表中去,但仍然需要使用到括號來分組正則表達式的話,確保你的分組是非捕獲分組,形如 (?:…) 。比如:

--

--