Java正则表达式拆分字符串

Hik*_*est 7 java regex string split

我一直在尝试用Java构建一个模式,用破折号和制表符分割下面的字符串.例外情况是,如果在字符串中遇到选项卡后出现破折号,即使只有一次,我们也会停止在破折号上拆分并仅在选项卡上拆分.例如:

输入字符串(那些大空格是制表符):

"4852174--r-watch   7   47  2   0   80-B    20  5"
Run Code Online (Sandbox Code Playgroud)

预期产量: ["4852174", "r", "watch", "7", "47", "2", "0", "80-B", "20", "5"]

到目前为止,我正在使用以下正则表达式: "(?<!\\d)(\\-+)(?!\t)|\t"

信号的第一组括号我不希望在分隔符之前有任何数字,下一个信号表示我想要一个或多个破折号,最后一组要注意我不想跟随标签.当然,最后的OR用于按单个制表符分割.

我得到的结果如下: ["4852174-", "r", "watch", "7", "47", "2", "0", "80-B", "20", "5"]

注意"4852174-"中应该没有的额外短划线.我已经尝试了很长时间试图解决这个问题,但是我做的任何小改变都会破坏其他地方的分裂.

任何帮助解决这个问题将不胜感激.先感谢您!

Cv4*_*Cv4 7

正则表达式

\t|-+(?!\w\t)
Run Code Online (Sandbox Code Playgroud)

将字符串拆分为您想要的数组,但没有进一步澄清您想要做什么我不能告诉您它是否适用于其他字符串.

你可以在www.regexpal.com上测试正则表达式(这是你的正则表达式.)

请注意,你必须逃避Java中的反斜杠.所以在Java中它会是

\\t|-+(?!\\w\\t)
Run Code Online (Sandbox Code Playgroud)