2016-04-01 18 views
1

merhaba bu pcre regex (php regex)PCRE php regex

/\h*(.*?)\h*[=]\h*("(.*?(?:[\\\\]".*?)*)")\h*([,|.*?])/ 

bu dize

data1 = "value 1", data2 = "value 2", data3 = " data4(" hey ") ", 

ve bu düzenli ifade eser bu ne

data, data2, data3 
val, val2, data4("val3") 

olsun regex C++ regex eşittir?

+0

üzgün i '\ s' ile \ h' 'yerine – MyJustWorking

+1

sabit IDEONE demo ve JS (ECMA5) bakınız. Ham bir dize kullanırsanız, '' 'yerine' '\\' 'kullanın. [Bu demo] 'ya bakın (https://regex101.com/r/vJ3uC4/1). –

cevap

0

'u \s ile değiştirmeli ve \\'u ham bir dize haline getirmelisiniz.

Aşağıdaki örnek koduna bakınız:

#include <string> 
#include <iostream> 
#include <regex> 
using namespace std; 

int main() { 
    std::string pat = R"(\s*(.*?)\s*=\s*(\"(.*?(?:[\\]\".*?)*)\")\s*([,|.*?]))"; 
    std::regex r(pat); 
    std::cout << pat << "\n"; 

    std::string s = R"(data1 = "value 1", data2 = "value 2", data3 = " data4(" hey ") ",)"; 
    std::cout << s << "\n"; 
    for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), r); 
          i != std::sregex_iterator(); 
          ++i) 
    { 
     std::smatch m = *i; 
     std::cout << "Capture 1: " << m[1].str() << " at Position " << m.position(1) << '\n'; 
     std::cout << "Capture 3: " << m[3].str() << " at Position " << m.position(3) << '\n'; 
    } 
    return 0; 
} 

regex demo