Поймайте текст, используя корпорацию с конкретными правиламиPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Поймайте текст, используя корпорацию с конкретными правилами

Сообщение Anonymous »

ОК, я пытаюсь поймать текст, используя повторную эксплуатацию со следующими правилами:

[*] Каждая новая строка начинается с слова Type или Tag и: приходит после этого. | Тип или Tag должна быть группой захвата 1
[*] Varchar может прийти после: | Этот варчар должен быть группой захвата 2 < /li> приходит после этого
[*] Число приходит после \\ | Это число должно быть группой захвата 3 < /li> может прийти после номера
[*] Если у нас есть? Этот варчар должен быть группой захвата 4
[*] Если у нас есть? + varchar, то: может произойти после этого
Если у нас есть? Этот варчар должен быть группой захвата 5 < /li>
< /ul>
Примеры: < /p>

Код: Выделить всё

type:test\\1?value12:value9        // Should get: Group 1 = type, Group 2 = test, Group 3 = 1, Group 4 = value12, Group 5 = value9

type:\\22?value62:value3        // Should get: Group 1 = type, Group 2 = NULL, Group 3 = 22, Group 4 = value62, Group 5 = value3
< /code>
my regex: < /p>
/(type|tag):([^\\]+)?\\\\([0-9]{1,3})?\??([^\:]+):([^\:]+)?/i
< /code>
Я считаю, что это не точное, например: < /p>
type:\\1p?hello:iii
Текущая регулярная эксплуатация соответствует 1 как группа 3 и P? Hello as Group 4, однако он не должен совпадать с этим вообще. Группа 3 должна быть номером и? может прийти после этого, введите: \\ 1p? Привет: III не следуют за форматом, который мы хотим.
Кто -нибудь может помочь? Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/693 ... ific-rules
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»