Bir SQL sorgu dizesi belirli veriyi kaldırmak için bir yöntem yazıyorum ve ben outside tek tırnak görünür YALNIZCA kaşlı ayraç içinde herhangi bir kelime maç regex gerekir. Ben de (ters eğik çizgi öncesinde) kaçtı tırnak yanı sıra, kaçan tersbölülerden olasılığı faktör gerekir.
Aşağıdaki örneklerde, ben {FAN} maç regex değil {BAR} gerekir:
blah blah {FOO} blah 'I\'m typing {BAR} here with an escaped backslash \\'
blah blah {FOO} 'Three backslashes {BAR} and an escaped quote \\\\\\\' here {BAR}'
Ben (bu durumda "FON",) parantez içinde kelime almak için PHP preg_match kullanıyorum. İşte ben bugüne kadar sahip regex dize var:
$regex = '/' .
// Match the word in braces
'\{(\w+)\}' .
// Only if it is followed by an even number of single-quotes
'(?=(?:[^\']*\'[^\']*\')*[^\']*$)' .
// The end
'/';
Benim mantık, ben ayrıştırma ediyorum tek şey (Ben ilave ayracı-şey dışında) yasal bir SQL dizesi olduğundan, parantez bir dizi olmayan kaçan tırnak bir even sayısına göre izlediyseniz , o zaman tırnak dışında olmalıdır.
Ben verilen regex dikkate kaçtı tırnak ayırdığınız için DIŞINDA% 100 başarılı. Sadece emin tersbölülerden hiçbir tek sayıda bir alıntı maçtan önce orada olmak gerekiyor, ama beni yaşam için ben RegEx'in bu iletmek için görünmüyor olabilir. Herhangi girenlerin?