我想用特殊字符将句子分隔为单词保留空格。像这样:
"la sílaba tónica es la penúltima".split(...regex...)
收件人:
["la ", "sílaba ", "tónica ", "es ", "la ", "penúltima"]
↑ ↑ ↑ ↑
space space space space
我尝试使用此答案的修改版本: https://stackoverflow.com/a/26184632/2083117
使用该答案中的代码:
"la sílaba tónica es la penúltima".split(/\b(?![\s.])/)
结果:
["la ", "s", "í", "laba ", "t", "ó", "nica ", "es ", "la ", "pen", "ú", "ltima"]
↑ ↑ ↑
那些特殊字符不能分开单词。
我的版本仅添加了我要保留的特殊字符(.áéíóúñ,:;?
)
"la sílaba tónica es la penúltima".split(/\b(?![\s.áéíóúñ,:;?])/)
结果:
["la ", "sí", "laba ", "tó", "nica ", "es ", "la ", "penú", "ltima"]
↑ ↑ ↑
现在包含了这些字符,但是单词后面紧接着出现了单词。
正确的正则表达式是什么?
答案 0 :(得分:4)
尝试匹配 <#macro pager url="/main" page >
而不是拆分。
\S+\s*
答案 1 :(得分:2)
let splitArray = "la sílaba tónica es la penúltima".split(" ")
let splitArrayWithSpaces = splitArray.map((item, index ) => {
if(index!== splitArray.length-1) return (item+ " ")
else return item
})
console.log(splitArrayWithSpaces)
答案 2 :(得分:0)
此a-z\xC0-\xff
选择字符和变音符号。我将其除以/[^a-z\xC0-\xff]/
。然后我添加空间。
或者,您也可以除以/[\s]/
let test = "la sílaba tónica es la penúltima".split(/[^a-z\xC0-\xff]/)
for(let i=0; i < test.length; i++){test[i]+= " ";}
console.log(test)