为什么在regex.ReplaceAllString()中删除了数字

时间:2015-03-24 14:57:33

标签: go

play清楚地表明了我的困境。

最终我试图将一个不守规矩的字符串分成单词。给我" 2015"是一个词,所以" $ 100"但如果输入是"一个。 2wo,(三)"我想要[One 2wo三]。因为go不允许使用Unicode识别正则表达式,我认为我首先要删除所有"垃圾字符"然后使用strings.Fields()

问题在于剥离了任何数字:

reg := regexp.MustCompile(`[\[\](){}"?!,-:;,']`)
fmt.Println(reg.ReplaceAllString("one 1 zer0", ""))
// outputs "one  zer" when I'd expect "one 1 zer0" :(

1 个答案:

答案 0 :(得分:4)

[,-:]匹配范围, - :中的所有字符。该范围恰好包含所有ASCII数字(请参阅ascii(7))。将-放在最后:

reg := regexp.MustCompile(`[\[\](){}"?!,:;,'-]`)