4

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

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

我的新要求必须包括用引号括起来的短语,例如在 Google 中搜索短语。

"word1 word2" "word3 word4" word5

一定是:

word1 word2&word3 word4&word5

提前致谢。

编辑:如果有另一种方法或另一种方法可以做到这一点,我愿意接受任何想法。

4

1 回答 1

6

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

你可以匹配/"([^"]+)"|(\S+)/- 这将导致你的话 - 引用的字符串或非空格。它捕获了第 1 组第 2 组中的单词,然后您可以join使用&分隔符获取结果。

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

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

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

于 2012-05-06T06:12:29.643 回答