java - 用于获取用双引号引起来的短语的正则表达式

标签 java regex text

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

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

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

"word1 word2" "word3 word4" word5

必须是:

word1 word2&word3 word4&word5

提前致谢。

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

最佳答案

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

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

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

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

(请注意,字符串末尾会有一个额外的符号)

关于java - 用于获取用双引号引起来的短语的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10468439/

相关文章:

Javascript:每 100 个 block 文本运行一个正则表达式匹配函数

regex - 如何在 Google 表格中找到字符串中第一个数字的位置

java - Admob 立即崩溃

java - 避免在复合模式中使用 instanceof

java - 为什么这个正则表达式 ".*"与 "abcd 1234 abcd"匹配会给出两个匹配项?

java - 对于 Java,是否有一个与我想要的完全匹配的分词器?

ios - 如何更改 Xcode 键盘上按钮 "return"的操作?

Java 文件 IO 和 "access denied"错误

java - 配置为目标的 PN532 已由其发起者发布

c - 用 C 拆分一个文本文件并为其命名