Какой regex я могу использовать для соответствия только буквам, числам и одному пространству между каждым словом?

Python:

time python -c 'for i in xrange(int(1e8)): t=12341234234.234 / 2.0'
real    0m26.676s
user    0m25.154s
sys     0m0.076s

time python -c 'for i in xrange(int(1e8)): t=12341234234.234 * 0.5'
real    0m17.932s
user    0m16.481s
sys     0m0.048s

умножение на 33% быстрее

Lua:

time lua -e 'for i=1,1e8 do t=12341234234.234 / 2.0 end'
real    0m7.956s
user    0m7.332s
sys     0m0.032s

time lua -e 'for i=1,1e8 do t=12341234234.234 * 0.5 end'
real    0m7.997s
user    0m7.516s
sys     0m0.036s

=> никакая реальная разница

LuaJIT:

time luajit -O -e 'for i=1,1e8 do t=12341234234.234 / 2.0 end'
real    0m1.921s
user    0m1.668s
sys     0m0.004s

time luajit -O -e 'for i=1,1e8 do t=12341234234.234 * 0.5 end'
real    0m1.843s
user    0m1.676s
sys     0m0.000s

=> это только на 5% быстрее

заключения: в Python это быстрее для умножения, чем разделиться, но поскольку Вы становитесь ближе к ЦП с помощью более усовершенствованного VMs или МОНЕТ В ПЯТЬ ЦЕНТОВ, преимущество исчезает. Довольно возможно, что будущий Python VM сделал бы его не важным

24
задан Kara 31 May 2016 в 23:31
поделиться

5 ответов

Большинство реализаций регулярных выражений поддерживают именованные классы символов:

^[[:alnum:]]+( [[:alnum:]]+)*$

Вы могли бы проявить смекалку, хотя и немного менее ясно, и упростить это до:

^([[:alnum:]]+ ?)*$

К вашему сведению, второй допускает ложный пробел в конец строки. Если вы не хотите, чтобы это было с первым регулярным выражением.

Также, как говорили другие плакаты, если [[: alnum:]] не работает для вас, вы можете использовать [ A-Za-z0-9] вместо этого.

23
ответ дан 28 November 2019 в 23:45
поделиться

Это будет соответствовать слову

'[a-zA-Z0-9]+\ ?'
-1
ответ дан 28 November 2019 в 23:45
поделиться
(?:[a-zA-Z0-9]+[ ])+[a-zA-Z0-9]+

Если я правильно вас понял, указанное выше регулярное выражение должно работать. См. Снимок экрана ниже:

снимок экрана http://img136.imageshack.us/img136/6871/screenshotkiki056.png

1
ответ дан 28 November 2019 в 23:45
поделиться
([a-zA-Z0-9]+ ?)+?
7
ответ дан 28 November 2019 в 23:45
поделиться
^[a-zA-Z]+([\s][a-zA-Z]+)*$
2
ответ дан 28 November 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: