2016-06-29 2 views

ответ

0

Я хотел бы использовать: ~\{\{([^}]+?)\}\}~ и доступ массива зависит от языка!

[EDIT] добавить объяснения

  • ~: Ограничитель
  • \{\{, \}\}~: матч персонажей буквально. Должно быть сбежал.
  • [^}]: спичка ничего внутри {{}} пока }
  • +: повторить паттерна несколько раз (для нескольких символов)
  • ?: для «ленивых» , чтобы соответствовать, как несколько раз, как это возможно.
  • (): является захват

:)

[EDIT] добавить PHP пример кода для сопоставления иллюстрации:

<?php 
    $string= "{{test1}}{{test2}}{{test3}}"; 

    if (preg_match_all("~\{\{([^}]+?)\}\}~s", $string, $matches)) 
    { 
     print_r(array($matches)); 
     // Do what you want 
    } 
    ?> 

выход будет так:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => {{test1}} 
        [1] => {{test2}} 
        [2] => {{test3}} 
       ) 

      [1] => Array 
       (
        [0] => test1 
        [1] => test2 
        [2] => test3 
       ) 

     ) 

) 
+0

спасибо за ваш ответ. – user2156181

0
test[0-9]+ 

Это соответствует всем вхождений testX, где X является целым числом от любого размера.

Если вы пытаетесь определить скобки вместо этого, используйте:

[{\}] 
0

C# используют Матчи метод возвращает объект MatchCollection. Вот некоторые коды,

Regex r = new Regex(@"{{[^{\s}]+}}"); 
     MatchCollection col = r.Matches("{{test1}}{{test2}}{{test3}}"); 
     string[] arr = null; 
     if (col != null) 
     { 
      arr = new string[col.Count]; 
      for (int i = 0; i < col.Count; i++) 
      { 
       arr[i] = col[i].Value; 
      } 
     } 
Смежные вопросы