我需要删除字符串中的所有额外空格。我使用正则表达式匹配字符串和匹配的字符串,我用其他一些替换。为了更好地理解,请参阅以下示例:
3个输入字符串:
Hello, how are you?
Hello , how are you?
Hello , how are you ?
这是应由一个模式正则表达式匹配的 3 个字符串。它看起来像这样:
Hello\s*,\s+how\s+are\s+you\s*?
它工作正常,但存在性能问题。如果我有很多模式(~20k)并尝试执行每个模式,它运行速度非常慢(3-5 分钟)。
也许有更好的方法来做到这一点?例如使用一些 3d 方库?
UPD:伙计们,这个问题不是关于如何做到这一点的。这是关于如何以最佳性能做到这一点。:)
让我更详细地解释一下。主要目标是标记文本。(用特殊符号替换一些标记)
例如,我有一个令牌“不错的尝试”。然后我输入文本“这是不错的尝试”。结果:“这是@tokenizedtext@”其中@tokenizedtext@ 一些特殊符号。在这种情况下没关系。
接下来我有字符串“迈克说这是一次不错的尝试”。结果应该是“迈克说这是一个@tokenizedtext@”。我认为主要思想很清楚。
所以我可以有很多代币。当我处理它时,我将我的令牌从“nice try”转换为模式“nice\s+try”。并尝试用此模式输入文本替换。它工作正常。但是,如果在标记中有更多的空格并且还有标点符号,那么我的正则表达式就会变得更大并且工作得非常慢。
你有解决这个问题的一些建议(技术或逻辑)吗?