javascript - 解析字符串 : extracting words and phrases [JavaScript]

标签 javascript regex parsing

我需要在以空格分隔的术语列表中支持精确的短语(用引号引起来)。 因此,用空格字符拆分相应的字符串已经不够了。

例子:

input : 'foo bar "lorem ipsum" baz'
output: ['foo', 'bar', 'lorem ipsum', 'baz']

我想知道这是否可以通过单个 RegEx 来实现,而不是执行复杂的解析或拆分和重新连接操作。

如有任何帮助,我们将不胜感激!

最佳答案

var str = 'foo bar "lorem ipsum" baz';  
var results = str.match(/("[^"]+"|[^"\s]+)/g);

...返回您要查找的数组。
但是请注意:

  • 包含边界引号,因此可以使用结果中的 replace(/^"([^"]+)"$/,"$1") 将其删除。
  • 引号之间的空格将保持不变。所以,如果 loremipsum 之间有三个空格,它们就会出现在结果中。您可以通过对结果运行 replace(/\s+/,"") 来解决此问题。
  • 如果 ipsum 后没有结束符 "(即引用不正确的短语),您将得到:['foo', 'bar' , 'lorem', 'ipsum', 'baz']

关于javascript - 解析字符串 : extracting words and phrases [JavaScript],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64904/

相关文章:

javascript - 将 HTML 元素分配给变量在 Javascript 中有什么特别的优势吗?

regex - 如何从正则表达式中获取所有匹配项?

javascript - 匹配 float 但不匹配由点分隔的日期

java - 如何将多行文件变成用控制字符分隔的单行文件

javascript - 使用 javascript 将对象绑定(bind)到模板

javascript - 如何将 JavaScript 对象/数组发送到前端 - node.js 应用程序

javascript - Node 集群 : Why are all requests handled by only one worker?

regex - 如何统计一个文件组的行数?

Java 字符串解析和评估

java - 用Java制作一个简单的CSV文件