Вот мое регулярное выражение: {{[^\{\s}]+\}}
Regex символ выражения без пространства
И мой вход {{test1}}{{test2}}{{test3}}
.
Как я могу получить эти 3 теста по массиву с использованием выражения регулярного выражения?
Вот мое регулярное выражение: {{[^\{\s}]+\}}
Regex символ выражения без пространства
И мой вход {{test1}}{{test2}}{{test3}}
.
Как я могу получить эти 3 теста по массиву с использованием выражения регулярного выражения?
Я хотел бы использовать: ~\{\{([^}]+?)\}\}~
и доступ массива зависит от языка!
[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
)
)
)
test[0-9]+
Это соответствует всем вхождений testX
, где X
является целым числом от любого размера.
Если вы пытаетесь определить скобки вместо этого, используйте:
[{\}]
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;
}
}
спасибо за ваш ответ. – user2156181