2017-02-07 6 views
0

Мне нужно итерации 300 файлов и изменить строку из одного столбца в 4 столбца в excel .. Я знаю, что есть способ сделать это в reg-ex, но я не могу понять это out ... Я знаю, что preg_match может называть возвращенные совпадения .. но я попытался использовать regex101.com, чтобы выяснить, как получить возвращаемые результаты, которые я ищу.Получить массив из нескольких подстрок preg_match_all

У меня есть эта строка ..

Rev 1: blah blah blah blah blah blah 1/1/2017 BLAH 

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

$results = array(
    "rev" => "Rev 1", 
    "text" => "blah blah blah blah blah blah", 
    "date" => "1/1/2017" 
    "name" => "BLAH" 
) 

проблема, с которой я столкнулся, заключается в том, что я не знаю, как получить несколько совпадений в одном вызове preg_match, чтобы вернуть желаемый путь. Я попытался Google каким-то образом сделать это, и пришел пустым ,

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

\d+\/\d+\/\d+ \(?[A-z]+\)? совпадает с date и name с или без () вокруг него

^([Rr][Ee][Vv] \d+:) спички rev

Я не знаю способа, чтобы получить text между rev и date поэтому я не имеют рег-ex для этого ...

+1

Ничто не будет дурака. Что, если в тексте появляется что-то похожее на дату? – AbraCadaver

+0

У меня есть лично, хотя все 300+ листов и проверены все, что когда я скопировал текст из комментария excel к новой вкладке. поэтому я знаю, что ничего подобного не было. и если есть, то так будет, я собираюсь идти, хотя их все по одному и дважды проверять, потому что, когда я запустил этот скрипт, он сохранит их в новый каталог и не перезапишет исходные файлы. но да, вы правы, для других это может не сработать. –

ответ

1

Вы действительно близки (предостережение здесь: я предполагаю, что все ваши строки будут одного формата)

^([Rr][Ee][Vv] \d+:)(.*)\d+\/\d+\/\d+(.*)? 

(.*) позволяет вам захватывать то, что находится между группами. Вы должны поместить все, что хотите, в скобки.

Вы можете увидеть его в действии здесь https://regex101.com/r/8GKgWl/1

+0

ahhh, см. '(. *)' Было недостающее звено, я знал, что есть способ, ха-ха, спасибо! –

+0

закончил с этим https://regex101.com/r/8GKgWl/2 в качестве окончательного выражения: D –

+0

возвращает false по какой-либо причине .... https://regex101.com/r/8GKgWl/3 работы штраф там, хотя –

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

  • Нет связанных вопросов^_^