我有一个小的Node脚本,用于网络爬虫一个网页。从该页面中,我提取了一个字符串数组。
我正在尝试清理这些字符串(目前使用正则表达式和string.replace)。
一个示例字符串看起来像这样:
2 Glücklich sind die,die seine Erinnerungen beachten,+die mit ganzem Herzen nach ihm suchen.+\n
我的清理代码如下所示。
string.replace(/\+/g, '').replace(/\*/g, '').replace('\n', '').replace(/(^\d+)/g, '').trim()
第一部分删除所有的"+", 第二部分删除所有的"*", 第三部分删除换行符, 最后一部分删除前导数字。
大部分工作良好,但我有一些边缘情况。这是我的结果:
2 Glücklich sind die,die seine Erinnerungen beachten,die mit ganzem Herzen nach ihm suchen.
问题:
1. 领先数字未被删除(当数字有两位或更多位时,它总是被删除,我不知道为什么一个数字保持不变)。 2. 第一个"*"被删除了,但因为没有空格,所以没有空格了。第二个"*"后面跟着一个空格...所以没有问题。 3. "+"也是同样的问题...没有空格跟随,所以单词粘在一起。
我的目标是正确解析每个字符串。我有成千上万个具有不同组合的字符串,但只有"+", "*", "\n"和数字作为特殊字符。
字符串应该像这样:
Glücklich sind die, die seine Erinnerungen beachten, die mit ganzem Herzen nach ihm suchen。
希望有人有想法来实现这一点。
^\d+
模式应该替换单个数字...有可能有前导空格吗? 也许先尝试做.trim()
?此外,如果您知道+/*
替换后应始终有空格,可以这样做:.replace(/\s*(\+|\*)\s*/g, ' ')
。这样任何现有的空格都将随着*/+
被移除,然后全部用一个空格替换。 - David784