【发布时间】:2015-08-24 18:00:09
【问题描述】:
我的目标是制作一个可以处理两种情况的正则表达式:
- 包含一个或多个任意顺序的换行符的多个空格应成为一个换行符
- 不包括任何换行符的多个空格应成为空格
无序性与换行符和无换行符的不同情况相结合,使这变得复杂。
最有效的方法是什么?
例如
' \n \n \n a' # --> '\na'
' \t \t a' # --> ' a'
' \na\n ' # --> '\na\n'
基准测试:
s = ' \n \n \n a \t \t a \na\n '
n_times = 1000000
------------------------------------------------------
change_whitespace(s) - 5.87 s
change_whitespace_2(s) - 3.51 s
change_whitespace_3(s) - 3.93 s
n_times = 100000
------------------------------------------------------
change_whitespace(s * 100) - 27.9 s
change_whitespace_2(s * 100) - 16.8 s
change_whitespace_3(s * 100) - 19.7 s
【问题讨论】:
-
荒谬。这个问题怎么太笼统了?
-
我唯一能想到的是你没有展示你尝试过的东西,但这并不一定让它本身太宽泛,所以我不知道。跨度>
-
一个很好的问题,我也想过两步法,但无法使用 PC。请不要忘记接受对您有用的答案:)