Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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正则表达式返回false?_Java_Regex - Fatal编程技术网

为什么这个java正则表达式返回false?

为什么这个java正则表达式返回false?,java,regex,Java,Regex,我的目的是使用String::split()方法查找所有“标记”和带引号的字符串: 输入文本: this "a test" abd "and more" 它总是返回false 另外,如何“引用”它以便在源代码中使用它?String.split使用匹配项作为分隔符进行拆分,即返回所有不匹配的内容。如果要返回匹配的内容,应该使用 另外,\\w*匹配长度为0的字符串,您可能希望避免使用该字符串。使用+匹配1个或多个 您还有一些不必要的括号,外部的*不应该在那里-正则表达式的其余部分已经匹配了单个标

我的目的是使用String::split()方法查找所有“标记”和带引号的字符串:

输入文本:

this  "a test" abd "and more"
它总是返回false


另外,如何“引用”它以便在源代码中使用它?

String.split
使用匹配项作为分隔符进行拆分,即返回所有不匹配的内容。如果要返回匹配的内容,应该使用

另外,
\\w*
匹配长度为0的字符串,您可能希望避免使用该字符串。使用
+
匹配1个或多个

您还有一些不必要的括号,外部的
*
不应该在那里-正则表达式的其余部分已经匹配了单个标记中的所有字符,多个标记应该在正则表达式匹配的多个调用中进行匹配(所以说“任意数量”没有意义)

上述印刷品:

这个
“测试”
阿布德
“还有更多”
要删除引号,可以更新要使用的正则表达式,这将检查
”是否存在,但实际上并不匹配:

"(?<=\")\\w[\\w\\s]*(?=\")|\\w+"

”(?在Java中,调用静态函数不需要双冒号::XD提醒人们split来自String的缩写是什么?String#split?
String.split
返回
String[]
,所以我不确定它是如何返回false的。你能用实际输出显示代码和预期输出吗?我会说是的,通常使用的是#。(我自己也使用它)'如何“引用”它'你是指使用转义符吗?你需要
(\“[\\w\\s]*\”)(\\w*)*
我相信一些IDE在粘贴时会自动执行此操作(即IntelliJ)感谢您给出了一个漂亮、完整、有效且富有启发性的答案:)
Matcher m = Pattern.compile("\"[\\w\\s]*\"|\\w+").matcher("this  \"a test\" abd \"and more\"");
while (m.find())
    System.out.println(m.group());
"(?<=\")\\w[\\w\\s]*(?=\")|\\w+"