2015-05-07 2 views
1

Я пытаюсь создать регулярное выражение, которое анализирует свойства продукта, например:
«во главе встретились интерн weerstand 1/4w 1k» будет разобрать на:Regex матч до другого матча

[0] met interne weerstand 
[1] 1/4w 
[2] 1k 

Так пока у меня есть это регулярное выражение:
/(?:met .*)|(?:(?:\d+\/)?\d+\w ?)|(?:\d+ ?in ?\d+)/

И я пытаюсь соответствовать 1/4w 1/4s 1/4w 1/4d 3 in 1 1% led met interne weerstand 1/4w против него.

Это не работает так, как я хочу, чтобы работать:

array (size=6) 
    0 => 
    array (size=1) 
     0 => string '1/4w ' (length=5) 
    1 => 
    array (size=1) 
     0 => string '1/4s ' (length=5) 
    2 => 
    array (size=1) 
     0 => string '1/4w ' (length=5) 
    3 => 
    array (size=1) 
     0 => string '1/4d ' (length=5) 
    4 => 
    array (size=1) 
     0 => string '3 in 1' (length=6) 
    5 => 
    array (size=1) 
     0 => string 'met interne weerstand 1/4w' (length=26) 

Met интерн weerstand также соответствия 1/4W, но я хочу, 1/4w быть индивидуальный матч.
Как это сделать?

+0

проверить это http://stackoverflow.com/questions/7124778/how-to-match-anything-up-until-this-sequence-of-characters-in-a-regular-expres –

+0

Это не то, что мне нужно, потому что это не точная последовательность символов. Его также можно было бы «встретить» {безотносительно}. – FrozenDroid

ответ

1
(?:met .*?(?=(?:(?:\d+\/)?\d+\w ?)|$))|(?:(?:\d+\/)?\d+\w ?)|(?:\d+ ?in ?\d+) 

     ^^ 

non greedy подход будет работать для вас с демо lookahead.See.

https://regex101.com/r/bN8dL3/9

+0

Если я попробую это, я получаю: '0 => string 'met' (length = 4)' – FrozenDroid

+0

Нет другого пути? Можете ли вы, ссылку на шаблон или нет такой вещи в регулярных выражениях? – FrozenDroid

+1

Я использовал новый код, и он действительно работает, но проблема в том, что я создам тишину еще нескольких шаблонов, и, если мне придется ставить их в глаза, это может вызвать беспорядок. – FrozenDroid

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