Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 用双引号括起来的get短语的正则表达式_Java_Regex_Text - Fatal编程技术网

Java 用双引号括起来的get短语的正则表达式

Java 用双引号括起来的get短语的正则表达式,java,regex,text,Java,Regex,Text,我需要帮助来建立一个正则表达式。我正在编写一个软件,在字符串中查找某些单词。但我还需要寻找短语。此字符串由用户在文本框中输入 目前,我使用以下正则表达式\s+用符号替换空格: word1-word2-word3toword1&word2&word3 我的新要求必须包括用引号括起来的短语,比如在谷歌搜索短语 "word1 word2" "word3 word4" word5 必须是: word1 word2&word3 word4&word5 提前谢谢 编辑:如果有其他方法或其

我需要帮助来建立一个正则表达式。我正在编写一个软件,在字符串中查找某些单词。但我还需要寻找短语。此字符串由用户在文本框中输入

目前,我使用以下正则表达式
\s+
用符号替换空格:
word1-word2-word3
to
word1&word2&word3

我的新要求必须包括用引号括起来的短语,比如在谷歌搜索短语

"word1 word2" "word3 word4" word5
必须是:

word1 word2&word3 word4&word5
提前谢谢


编辑:如果有其他方法或其他方法来做同样的事情,我愿意接受任何想法。

这假设任务是平衡的-你有偶数个任务,而不是单词中间的任务

您可以匹配
/“([^”]+)”|(\S+)/
-这将导致您的单词带有引号的字符串或非空格。它捕获组1或组2中的单词,然后您可以
使用
分隔符将结果连接起来

另一个选项:您可以在一次替换中获得它,这与第一个模式非常相似,只需跳过您的标记即可。下面是一个JavaScript示例:

s = s.replace(/(?:"([^"]+)"|(\S+))\s*/g, '$1$2&');

(请注意,字符串末尾将有一个额外的“与”)

您不再有正则语言。您无法使用regexp执行此操作:正则表达式不支持任何类型的计数。您需要在此处进行计数,因为当您看到奇数引号与偶数引号时,操作是不同的。如果单行中引用项的数量有合理的下限,您可以通过自己计算来假装它,但是表达式不会很漂亮;否则,你应该构建更健壮的东西。我没有解决你问题的方法,但这里有一个非常好的网站,你可以在这里编写并检查正则表达式是否正确。希望它能帮助你。@palp.R.O.-为什么它不是正则表达式?@dasblinkenlight-错误。正则表达式支持使用常量边界进行计数。在这里,您的计数永远不必超过2。我同意,如果您希望将来支持更多功能,简单的语法分析器可能是一个选项,但这里没有简单的学术正则表达式不能做的事情。我尝试了
“([^”]+)”|(\S+)
在Java中,我发现这可以找到字符串。通过这个正则表达式,我可以找到每个单词或短语。不是为了替换,而是为了查找。@Paul-没错,我说你必须
连接到一个新字符串,这还不错,是吗<代码>:)