2013-12-19 7 views
0
<?php 

echo preg_replace('/(\* Version:[ ]+)([0-9\.]{6})/', '${1}' . '6.6.6' , ' * Version:   3.1.0'); 

Я в основном хочу определить линию с версией и заменить ее новой версией. Я не понимаю, почему он не работаетPHP - Застрял с этим регулярным выражением

+1

Какие данные испытаний? Тестовые данные являются третьим аргументом. – redanimalwar

ответ

2

Это Подвыражение ...

([0-9\.]{6}) 

... будет соответствовать только если есть точно 6 целевых символов. Но есть только 5 из них в строке 3.1.0 (3 цифры, две точки).

Самый простой способ исправить это изменить, что подвыражения ...

([0-9.]{1,6}) 

... так что это будет соответствовать до 6 символов. Я также удалил предыдущую обратную косую черту здесь: вам не нужно избегать символа . в классе символов (здесь он не имеет особого значения).

+1

Чтобы соответствовать только данным OPs, это скорее будет '([0-9.] {5})' http://regex101.com/r/cD7qJ2. В противном случае '([0-9.] {2,})' может быть хорошей идеей. –

+0

Согласовано. Фактически, для того, чтобы покрыть только правильное управление версиями, нечто более похожее на '[0-9] + (?: \. [0-9]) *' выглядит более подходящим. – raina77ow

+0

Lol tank, я считаю, что считаю, я считаю. – redanimalwar

Смежные вопросы