對於某些數據處理,我需要將一個字符串拆分爲多個項目。 的輸入字符串的例子是:匹配特定字符,如果它在兩位數之間用正則表達式
'one, two & three and four-five 123-456'
現在,我需要這個串分離成的物品,在可能情況下定界符是,
,&
,(空間),
and
,-
。但是,這是我卡住的地方,它不應該分裂在-
之間,當它在兩個數字之間。
我使用PHP和preg_split
做實際的分裂,但我需要一個正則表達式匹配的分隔符除所述定界符-
當它是兩個數字之間(數字,但也可能是123-456
)。在PHP中使用trim()
完成每個項目周圍的空格。
我使用下面的正則表達式:
/(and|,|\s|&)|\D(-)\D/
輸出(使用preg_split
後,等)是:
[0] => one
[1] => two
[2] => three
[3] => fou
[4] => ive
[5] => 123-456
的工作是正確的,但它也需要最後和第一週圍文字的字母爲-
分隔符。該項目123-456
是正確的,因爲它不應與-
匹配(並與preg_split
分開),當它立即被數字包圍時。
預期成果是:
[0] => one
[1] => two
[2] => three
[3] => four
[4] => five
[5] => 123-456
任何幫助表示讚賞,如果任何信息缺乏讓我知道,我會更新我的問題。
謝謝。這解決了我的問題。我會在幾分鐘內接受你的答案。出於興趣,第一部分的符號有什麼不同?它和我的完全一樣,但是它還有別的用途嗎? –
我加了一個簡單的解釋。 –
最後的交替側應該是'(?<!\ d) - (?!\ d)',否則它不匹配前導和尾部'-' – revo