регулярное выражение 0); - PullRequest
0 голосов
/ 20 июля 2010

У меня есть следующее регулярное выражение:

SOMETHING(.*?),(1|0)\\);

Это должно соответствовать ЧТО-ТО, затем что-нибудь, затем запятая, затем 1 или 0, а затем);но по какой-то причине последний квадрат не соответствует, пример строки:

SOMETHINGdfsdfdsfd dsffdsdf dfsfds FEHEF777a , 0);

смелая часть - это конец.Я сбегаю) неправильно?\ должен работать ...

пример php, где $ o - моя строка

preg_match_all('%INSERT INTO (.*?),(1|0)\);%sm', $o, $matches);

Ответы [ 2 ]

1 голос
/ 20 июля 2010

Это работает здесь, возможно, вы хотели получить окончание ); там? Если так:

 SOMETHING(.*?),((?:1|0)\);)

В противном случае: на каком языке мы говорим? Вам нужно удвоить или утроить \? (\\ / \\\ может быть возможно в некоторых реализациях).

Редактировать: ОК, php

$php -r 'var_dump(preg_match_all("/SOMETHING(.*?),(1|0)\);/","SOMETHINGdfsdfdsfd dsffdsdf dfsfds FEHEF777a ,0);",$matches),$matches);'
int(1)
array(3) {
  [0]=>
  array(1) {
    [0]=>
    string(49) "SOMETHINGdfsdfdsfd dsffdsdf dfsfds FEHEF777a ,0);"
  }
  [1]=>
  array(1) {
        [0]=>
    string(36) "dfsdfdsfd dsffdsdf dfsfds FEHEF777a "
  }
  [2]=>
  array(1) {
    [0]=>
    string(1) "0"
  }
}

Идеальная пара.

1 голос
/ 20 июля 2010

Ваш оригинальный пост не показывает, что вы избегаете его. Вам нужно:

SOMETHING(.*?),(1|0)\);

Если у вас это есть, на каком языке выполняется регулярное выражение, например, Java, PHP, Perl?

UPDATE

Есть несколько вещей, которые нужно учитывать. Вы используете не жадное выражение в своем первом захвате. В сочетании с вашими модификаторами (многострочные и все точки) это может быть противоречивым. Кроме того, на основании вашего ввода вам может потребоваться экранировать первый набор скобок.

Регулярные выражения очень мощные, но такие же мощные, как и их создатели. То есть они часто терпят неудачу, если вы не знаете точно, что вы хотите соответствовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...