我想要一个与以下字符串匹配的正则表达式:
"( one , two,three ,four, '')"
并提取以下内容:
"one"
"two"
"three"
""
可以有任意多个元素。正则表达式:
"\[a-zA-Z\]+|(?<=')\\s*(?=')"
可以工作,但是我正在使用的库与环顾断言不兼容。
我有什么选择吗?
答案 0 :(得分:1)
此表达式可能会捕获我们可能要在此处提取的内容:
(\s+)?([A-Za-z]+)(\s+)?|'(.+)?'
我们可能不希望其他界限,而我们期望的输出在这两组中:
([A-Za-z]+)
(.+)
jex.im可视化正则表达式:
const regex = /(\s+)?([A-Za-z]+)(\s+)?|'(.+)?'/gm;
const str = `"( one , two,three ,four, '')"`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}