我正在尝试拆分格式类似于 Bananas|,|Bananas|||Bananas|Oranges|,|Bananas|||Bananas|Oranges|||Bananas|Oranges|Green Apples|,|Bananas 的字符串|||Bananas|Oranges|||Bananas|Oranges|Red Apples|,|Bananas|||Bananas|Oranges|||Bananas|Oranges|Pears
带有正则表达式,位于 |||
或 |,|
分隔符。我正在使用 [a-zA-Z |]+\|[,|\0]\|
,但我有一个小问题:三重管道分隔符被 捕获[a-zA-Z |]
字符类。
有没有办法将 [a-zA-Z |]
字符类更改为仅接受一行中的一个管道字符,同时允许任意数量的其他字符? (即它应该接受 accessories|batteries
但不接受 accessories||batteries
。)
更多示例:在原始字符串中,正则表达式应接受 Bananas|Oranges|,|
或 Bananas|||
,而不是 Bananas||| Bananas|Oranges|,|
,在 |[,|]|
之前有任意数量的单竖线分隔名称。
最佳答案
我想你会想要一个包含一堆这些 [a-zA-Z ]+
的组,后面总是跟着一个 \|
。该组可以重复多次,并且始终以 ,|
或 ||
(在尾随 |
之后)终止,因此 (,|\|)\|
总共:([a-zA-Z ]+\|)+(,|\|)\|
关于java - 正则表达式中仅接受一行中的单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5545073/