2010-07-05 6 views
-1

Что это регулярное выражение имею в виду?

preg_match("/^obj(\d+)\-{0,1}(|mi\d{0,1}|critical|questionText|answerText\-{0,1}\d+)$/", $k, $a) 

preg_match является функцией PHP, который должен перевести его

ответ

3

Это выражение, прокомментировал будет выглядеть

^     // start of line 
obj    // literal obj 
(\d+)    // one or more digits (0-9), captured in a group 
-{0,1}   // optional dash 
(     // start second capturing group 
        // nothing 
    |    // ... OR ... 
    mi\d{0,1}  // literal mi, followed by an optional digit 
    |    // ... OR ... 
    critical  // literal critical 
    |    // ... OR ... 
    questionText // literal questionText 
    |    // ... OR ... 
    answerText  // literal answerText 
     -{0,1}  // optional dash 
     \d+   // one or more digits (0-9) 
)     // end of capturing group 
$     // end of line 

Пример того, что матчи будет

obj1000-critical или obj1000answerText-100

1

^obj(\d+)-{0,1} означает, что строка является началом строки и начинается с obj, за которым следует число, по меньшей мере, 1 цифра, то есть может быть знаком -.

(|mi\d{0,1}|critical|questionText|answerText-{0,1}\d+) означает, что текст является один из следующих:

  • ничего
  • mi, который может сопровождаться цифрой
  • critical
  • questionText
  • answerText, который может сопровождаться один знак -, после чего число не менее 1 цифры

Тогда есть конец линии. Поиск чувствителен к регистру.

0

IT будет соответствовать строке, которая начинается с OBJ, после чего Спальных, необязательного тиром, а затем либо

  • ничего
  • ми followd рядом
  • критического
  • questionTest
  • answerText, за которым следует необязательный вариант - который, в свою очередь, следует за номером (не обязательно) , а затем с концом строки.

Примеры:

  • obj932-MI21
  • obj3124critical
  • obj1-answerText-86
  • obj654answerText8
  • obj23-
0

Это соответствует определенный формат строки, содержащие, f или пример:

obj1-mi5 
obj2critical 
obj3-questionText 
obj4answerText-0 

Эти шаблоны выглядят знакомыми?

preg_match найдет этот узор в $k и сохранит совпадения в $a. Сделайте следующее, чтобы узнать, что он нашел.

print_r($a); 
1

Сначала я предложил найти учебник по регулярному выражению и прочитать о том, как они структурированы.Это не является особенно сложным регулярным выражением, поэтому вы должны быть в состоянии понять это с помощью некоторых книг, и это будет означать, что вам не придется спрашивать abotu следующее регулярное выражение, с которым вы сталкиваетесь. ;-)

Что регулярное выражение означает, разбивка выглядит следующим образом:

^ - соответствует началу строки.

OBJ - это буквальный текст так будет соответствовать эти символы в начале строки

(\ d +) - это будет соответствовать одна или несколько цифр (0-9) и кронштейны означает, что они захватываются таким образом, чтобы их можно было использовать после разбора.

- {0,1} - это будет соответствовать 0 или 1 символам "-".

(| mi \ d {0,1} | critical | questionText | answerText- {0,1} \ d +) - снова скобки будут фиксировать это как группу. «|» используется как «или», поэтому он будет соответствовать любому из разделенных значений. Хотя я не уверен, что думаю, что он начинается с «|» может означать, что он будет соответствовать пустой строке.

mi \ d {0,1} - соответствует митральной строке mi, за которой следует 0 или 1 цифра.

критичный, questionText - это как буквальные варианты, которые соответствуют точному тексту

answerText- {0,1} \ d + - это будет соответствовать строковой answerText с последующей необязательным «-» и одну или несколько цифр.

$ - строка должна заканчиваться сразу после предыдущего совпадения.

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

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