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

当前,我使用以下正则表达式\s+将空格替换为&符:word1 word2 word3word1&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&');

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

10-06 07:11