2016-08-24 5 views
0

У меня есть огромный код, который имеет число между некоторыми линиями: например:регулярного выражения номера удалить между линией ломает

code code code 
7362 
code code code 
code code code 
code code code 
63 
code code code 
... 

Я хочу, чтобы удалить эти цифры, между кодом стать:

code code code 
code code code 
code code code 
code code code 
code code code 

Я пробовал:

$a = preg_replace("/(s[0-9,]+s)/", "", $a); 

но он не работает.

/(s[0-9,]+s 
+0

http://stackoverflow.com/a/14236162/3164682 – Sarath

ответ

1

Вы забыли бежать 's'

$a = preg_replace("/(\s[0-9,]+\s)/", "", $a); 

И кома после 9 не надо.

+0

Однако, это 's \ [0-9] + \ s' будет удалить разрывы строк и не найти номера в начале/конец строки. Фактически, это приведет к удалению номеров в любом месте, а не только к номерам. –

0

Это удалит все цифры:

$words = preg_replace('/[0-9]+/', '', $words); 
1

Лучший способ удалить цифры-только линии является использование

'~^\d+$\R*~m' 

См детализирует regex demo

Pattern:

  • ^ - начало строки (так как модификатор MULTILINE позволяет ^ совпадать с началом строки, а не строка)
  • \d+ - 1 или более цифр
  • $ - конец линии
  • \R* - ноль или больше разрывов строк (любая последовательность, такая как LF, CR, CR + LF).

PHP demo:

$str = "code code code\n7362\ncode code code\ncode code code\ncode code code\n63\ncode code code\n..."; 
$result = preg_replace('~^\d+$\R*~m', '', $str); 
echo $result; 
+0

Если у вас есть другие проблемы, связанные с текущей проблемой, не стесняйтесь оставить комментарий. –

0

Я попытался это его работа для меня.

/[1-9][0-9]*/g 
Смежные вопросы