使用 JavaScript Regex ,我需要基于以下字符串:
word1 w'or""d2 word3
"word4"word5
word6
具有以下结果:
word1
word2
word3
word4word5
word6
我尝试过:
\S+/gm
https://regex101.com/r/nsIA2Y/2
虽然可以根据空格正确地对单词进行分组,但是,我无法像示例中那样找到一种方法来删除将分组单词保持在一起的“和”字符。尝试了几种分组方法,但是我的知识有限。 / p>
请也说明解决方案。
答案 0 :(得分:2)
您可以通过调用.replace
来对匹配的数组进行后处理:
const str = `word1 w'or""d2 word3
"word4"word5
word6`
var arr = str.match(/\S+/g).map(s => s.replace(/['"]+/g, ''))
console.log(arr)
//=> ["word1", "word2", "word3", "word4word5", "word6"]
.map()
方法将创建一个新数组,其结果是对从.replace()
函数获得的每个元素调用提供的函数(在本例中为.match()
)。
答案 1 :(得分:1)
您可以使用此正则表达式/[^\w\s]/
来执行此操作。 /[^\w\s]/
将对所有非单词或空格的字符进行数学运算,然后使用replace()
将其删除。
演示:
var a = `word1 w'or""d2 word3`;
var b = `"word4"word5`;
var c = `word6`;
console.log(a.replace(/[^\w\s]/g, '').replace(/\s/g, '\n'));
console.log(b.replace(/[^\w\s]/g, '').replace(/\s/g, '\n'));
console.log(c.replace(/[^\w\s]/g, '').replace(/\s/g, '\n'));
答案 2 :(得分:1)
可以通过替换字符串来简单地解决此问题,并且似乎没有必要使用正则表达式,或者如果这样,则也许可以使用此表达式来解决。
const regex = /["']+/gm;
const str = `word1 f'dfretretr""ret word2 word3
"word4"word5
word6 word7
`;
const subst = ``;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log(result);
在this demo的右上角对表达式进行了说明,如果您想探索/简化/修改它,在this link中,您可以观察它如何与某些示例输入步骤匹配一步一步,如果您喜欢。