我需要在以空格分隔的术语列表中支持精确的短语(用引号引起来)。 因此,用空格字符拆分相应的字符串已经不够了。
例子:
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")
将其删除。 - 引号之间的空格将保持不变。所以,如果
lorem
和ipsum
之间有三个空格,它们就会出现在结果中。您可以通过对结果运行replace(/\s+/,"")
来解决此问题。 - 如果
ipsum
后没有结束符"
(即引用不正确的短语),您将得到:['foo', 'bar' , 'lorem', 'ipsum', 'baz']
关于javascript - 解析字符串 : extracting words and phrases [JavaScript],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64904/