Strings fields *,?



  • Hi
    qString str="Hi my name is Dave, I am using Qt to do my project."

    Can I use some thing like * or ?
    hi my name is ?, I am using ? to do my project.

    This should give me Dave and Qt. Something like string Template match.
    Please guide.
    Thank you



  • Hi! If i understand you correctly, you can use "QRegExp":http://qt-project.org/doc/qt-4.8/qregexp.html



  • Thanks qxoz..But in that reference page there is only regarding file matching like *.html etc. how to pass with my string and get values.
    Can u please provide some snippet or any other reference.


  • Moderators

    It does not matter whether a string contains a filename or a sentence, the principle is the same.

    There are plenty of regular expression tutorials around with examples and all. Just use google. RegExps are something that should be in every programmers toolbox, so learning about them will not be a waste of time!



  • Hi all...I used this..but not working...tried some others like * , \W* etc
    @QString str="my name is dave";
    QRegExp rx("my name is [^ ]*");
    rx.setPatternSyntax(QRegExp::Wildcard);
    int pos = 0;
    while ((pos = rx.indexIn(str, pos)) != -1) {
    qDebug()<< rx.capturedTexts();

    qDebug() << rx.cap(1);
    pos += rx.matchedLength();
    }
    @
    Whats wrong...Please help


  • Lifetime Qt Champion

    Hi,

    AFAIK, you don't use a capturing RegExp, you have to use parenthesis to capture something. Take a look at the QRegExp doc, specially the "capturing text part":http://qt-project.org/doc/qt-4.8/qregexp.html#capturing-text



  • the string read from the file is below
    reject tcp any any -> any any (content:"twitter.com";msg:"TWITTER1 BEING ACESSED";sid:41325;rev:001;)
    [CODE]
    QRegExp re("(\w*) tcp (\w*) any -> any any \(content:(("([A-Za-z0-9_\./\-$\s])"));msg:(("([A-Za-z0-9_\./\-$\s])"));sid:(\w*);");

    while((pos=re.indexIn(str, pos))!=-1){

            list << re.cap(1);//gives first field from string
            list << re.cap(2);//gives 3rd field
            list << re.cap(3);//gives content
            list << re.cap(6);//gives msg
            list << re.cap(9);//gives sid
    
            pos+=re.matchedLength();
    
        }
    

    [/CODE]
    The above regex gives me reject, any, twitter.com, twitter being accessed, 41325
    but for that i have to choose 1,2,3,6,9 fields out of the re.cap coz the line has multiple line of quotes.

    but the same doesn't work for the below string
    alert tcp 192.168.1.9 any -> any any (content:"www.gmail.com";msg:"gmail being ACCESSED";sid:41330;rev:001;)

    please help


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.