Регулярное выражение: повторяющийся шаблон [дубликат]

Этот запрос должен работать:

$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '%$username%'");
while($row = mysql_fetch_array($result))
{
    echo $row['FirstName'];
}

Проблема заключается в одинарных кавычках, поэтому ваш запрос завершается с ошибкой и возвращает FALSE, и цикл WHILE не может выполняться. Использование% позволяет сопоставлять любые результаты, содержащие вашу строку (например, SomeText- $ username-SomeText).

Это просто ответ на ваш вопрос, вы должны реализовать материал, упомянутый в других сообщениях: обработка ошибок , используйте escape-строки (пользователи могут вводить что-либо в поле, и вы ДОЛЖНЫ убедиться, что это не произвольный код), используйте PDO вместо mysql_connect, который теперь лишен.

1
задан Jon Surrell 2 December 2015 в 12:28
поделиться

1 ответ

Вам просто нужно получить доступ к коллекции match.Groups[2].Captures.

См. демонстрацию regex

Что вам нужно CaptureCollection . См. Эту ссылку Regex.Match :

Captures Получает коллекцию всех захватов, соответствующих группе захвата, в самом внутреннем левом-первом порядке (или самой внутренней -rightmost-first order, если регулярное выражение изменено с помощью опции RegexOptions.RightToLeft). [Унаследовано от Group.)

Вот демонграмма sample , которая выводит все записи из Groups[2] CaptureCollection (F2, 0B, E2, C2, A3):

var pattern = "(=([0-9A-F]{2}))+";
var result = Regex.Matches("=F2=0B=E2some text =C2=A3", pattern)
          .Cast<Match>().Select(p => p.Groups[2].Captures)
          .ToList();
foreach (var coll in result)
   foreach (var v in coll)
        Console.WriteLine(v);
2
ответ дан Wiktor Stribiżew 31 August 2018 в 23:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: