Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
165 views
in Technique[技术] by (71.8m points)

c++ - Regex to extract value between a single quote and parenthesis using boost token iterator

I have a value like this:

Supoose I have a string:

s = "server ('m1.labs.teradata.com') username ('u'se)r_*5') password('uer 5')  dbname ('default')";

I need to extract

  • token1 : 'm1.labs.teradata.com'
  • token2 : 'u'se)r_*5'
  • token3 : 'uer 5'

I am using the following regex in cpp:

regex re("('[!-~]+')"); 

sregex_token_iterator i(s.begin(), s.end(), re, 0);
sregex_token_iterator j;

unsigned count = 0;
while(i != j)
  {
    cout << "the token is"<<"   "<<*i++<< endl;
    count++;
  }
cout << "There were " << count << " tokens found." << endl;

return 0;
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If you do not expect symbol ' inside your string then '[^']+' would match what you need:

regex re("'[^']+'");

live example Result:

the token is   'FooBar'
the token is   'Another Value'
There were 2 tokens found.

if you do not need single quotes to be part of match change code to:

regex re("'([^']+)'");

sregex_token_iterator i(s.begin(), s.end(), re, {1});

another live example

the token is   FooBar
the token is   Another Value
There were 2 tokens found.

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...