Есть так много ответов для PHP и MySQL, но вот код для PHP и Oracle для предотвращения SQL-инъекций, а также регулярное использование драйверов oci8:
$conn = oci_connect($username, $password, $connection_string);
$stmt = oci_parse($conn, 'UPDATE table SET field = :xx WHERE ID = 123');
oci_bind_by_name($stmt, ':xx', $fieldval);
oci_execute($stmt);
ОБНОВЛЕНИЕ: Это перестало работать "с два и следующие прежде oo" как @Ciantic, на который указывают в комментариях.
<час>^(f(o[^o]|[^o])|[^f])*$
ПРИМЕЧАНИЕ: намного намного легче только инвертировать соответствие на стороне клиента вместо того, чтобы использовать вышеупомянутое regex.
regex предполагает, что каждый концы строки с символом новой строки, если это не тогда, видит regexs C++ и grep.
Примеры программ в Perl, Python, C++, и grep
все дают тот же вывод.
#!/usr/bin/perl -wn
print if /^(f(o[^o]|[^o])|[^f])*$/;
#!/usr/bin/env python
import fileinput, re, sys
from itertools import ifilter
re_not_foo = re.compile(r"^(f(o[^o]|[^o])|[^f])*$")
for line in ifilter(re_not_foo.match, fileinput.input()):
sys.stdout.write(line)
#include <iostream>
#include <string>
#include <boost/regex.hpp>
int main()
{
boost::regex re("^(f(o([^o]|$)|([^o]|$))|[^f])*$");
//NOTE: "|$"s are there due to `getline()` strips newline char
std::string line;
while (std::getline(std::cin, line))
if (boost::regex_match(line, re))
std::cout << line << std::endl;
}
$ grep "^\(f\(o\([^o]\|$\)\|\([^o]\|$\)\)\|[^f]\)*$" in.txt
:
foo
'foo'
abdfoode
abdfode
abdfde
abcde
f
fo
foo
fooo
ofooa
ofo
ofoo
Вывод:
abdfode
abdfde
abcde
f
fo
ofo
Можно обычно искать нечто и инвертировать результат соответствия regex от клиентского кода.
Для простого примера, скажем, Вы хотите проверить это, строка содержит только определенные символы.
Вы могли записать что как это:
^[A-Za-z0-9.$-]*$
и принимают true
результат как допустимый, или как это:
[^A-Za-z0-9.$-]
и принимают false
результат как допустимый.
, Конечно, это - не всегда опция: иногда просто необходимо поместить выражение в файл конфигурации или передать его другой программе, например. Но это стоит помнить. Ваша определенная проблема, например, выражение очень более просто, если можно использовать отрицание как это.
Я наткнулся на этот вопрос в поисках собственного решения для исключения регулярных выражений, в котором я пытаюсь исключить последовательность из моего регулярного выражения.
Моя первая реакция на эту ситуацию: Например, "каждая строка, в которой нет" foo ", заключалась в простом использовании опции -v invert sense of matching в grep.
grep -v foo
this возвращает все строки в файле, которые не соответствуют 'foo'
Это так просто, у меня сильное чувство, что я неправильно прочитал ваш вопрос ....