Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式在空格上拆分,前后不带单引号或双引号_Java_Regex_Split_Quotes - Fatal编程技术网

Java正则表达式在空格上拆分,前后不带单引号或双引号

Java正则表达式在空格上拆分,前后不带单引号或双引号,java,regex,split,quotes,Java,Regex,Split,Quotes,我没法让它工作 我有一个字符串,我想在空格上拆分它。但是,我不想在字符串内部拆分。即双引号或单引号内的文本 范例 正在拆分以下字符串: private String words = " Hello, today is nice " ; …应产生以下代币: private String words = " Hello, today is nice " ; 我可以用什么样的正则表达式 正则表达式([^“]*)|(“[^“]*”)应该匹配所有令牌。利用我对Java和Java的有限知识,

我没法让它工作

我有一个字符串,我想在空格上拆分它。但是,我不想在字符串内部拆分。即双引号或单引号内的文本

范例

正在拆分以下字符串:

private String words = " Hello, today is nice " ;
…应产生以下代币:

 private
 String
 words
 =
 " Hello, today is nice "
 ;
我可以用什么样的正则表达式

正则表达式
([^“]*)|(“[^“]*”)
应该匹配所有令牌。利用我对Java和Java的有限知识,您应该能够做到以下几点:

// Please excuse any syntax errors, I'm used to C#
Pattern pattern = Pattern.compile("([^ \"]*)|(\"[^\"]*\")");
Matcher matcher = pattern.matcher(theString);
while (matcher.find())
{
    // do something with matcher.group();
}
你试过这个吗

((['"]).*?\2|\S+)
它的作用如下:

(         <= Group everything
  (['"])  <= Find a simple or double quote
  .*?     <= Capture everything after the quote (ungreedy)
  \2      <= Find the simple or double quote (same as we had before)
  |       <= Or
  \S+     <= Non space characters (one at least)
)

(这不应该工作吗?[^\\s\']+\'[^\']*\'[^']*\'[^']*'”的副本正在查看它,但认为它是不同的。现在我意识到这是同一个问题。抱歉!尝试了这个..但出于某种原因它根本没有提取任何标记..可能不适合拆分方法?String[]tokens=myString.get(x).split((['\')).**?\\2 |\\S+);谢谢,伙计。这适合我的应用,而且效果很好。