我需要帮助来构建正则表达式。我正在编写一个在字符串中查找某些单词的软件。但是我还需要寻找短语。用户在文本框中输入此字符串。
当前,我使用以下正则表达式\s+
将空格替换为&符:word1 word2 word3
到word1&word2&word3
我的新要求必须包括用引号引起来的短语,例如在Google中搜索短语。
"word1 word2" "word3 word4" word5
一定是:
word1 word2&word3 word4&word5
提前致谢。
编辑:如果有另一种方法或方法可以做到这一点,那么我欢迎任何想法。
最佳答案
这假设任务是均衡的-您有偶数个任务,而不是单词中间的任务。
您可以匹配/"([^"]+)"|(\S+)/
-这将导致您的单词-用引号引起来的字符串或非空格。它捕获了第1组或第2组中的单词,然后可以使用join
分隔符对结果进行&
。
另一个选择:您可以跳过 token ,以一次替换的方式获得它,这与第一种模式非常相似。这是一个JavaScript示例:
s = s.replace(/(?:"([^"]+)"|(\S+))\s*/g, '$1$2&');
(请注意,在字符串末尾将有一个额外的“&”号)