【发布时间】:2019-04-20 01:10:11
【问题描述】:
我的 Java 输入 String str = "aa 2 xx 'b cc dd e' -o se '4-5'"
我想输出由空格分隔的标记,单引号内的空格除外。 所以,输出应该是:
aa
2
xx
'b cc dd e'
-o
se
'4-5'
我可以通过在空格上拆分字符串,然后合并一系列字符串,如“b、cc、dd、e”来取回“b cc dd e”,但我想要一个更好的方法,可能使用一些正则表达式。
【问题讨论】:
-
在一般情况下,您确实需要一个解析器来处理这个问题。像
can't这样的收缩词会发生什么?或者,那些永远不会出现? -
它们不会按照我的用例出现,整个事情是一个 cmd 行,里面有非常具体的东西。我用很好的正则表达式检查了其他一些帖子,但他们有 \" 而不是我有的未转义的单引号。
-
尝试使用替代和否定字符类来匹配您的值
[^"'\s]+|'[^']+'demo -
以下在 java 中有效:"\'(\\\'|[^\'])*?\'|[^ ]+"
-
连续的 3 个 \\\ 是多余的。
标签: java regex tokenize single-quotes