Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. using reqular expression wrong
QtWS25 Last Chance

using reqular expression wrong

Scheduled Pinned Locked Moved Unsolved General and Desktop
31 Posts 6 Posters 3.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V VRonin
    22 Jun 2022, 15:36

    Try this

    qDebug() <<"stream raw line  \n " << line ;
    QString sanitisedLine;
    for (const QRegularExpressionMatch &match : QRegularExpression("[a-zA-Z_][a-zA-Z_0-9]*").globalMatch(line))
    sanitisedLine.append(match.captured(0));
    qDebug() <<"QRegularExpression applied  \n " << sanitisedLine;
    
    A Offline
    A Offline
    Anonymous_Banned275
    wrote on 22 Jun 2022, 17:16 last edited by
    #14

    @VRonin

    I am missing something here , I do not understand the error .

    6ec658f0-4a0b-4ee7-8125-28777a12747f-image.png

    I need to read-up on QRegularExpressionMatch - but I think you are on right track...

    Would you kindly explain in few words what the code is doing ?
    I think that would help me...

    J 1 Reply Last reply 22 Jun 2022, 17:24
    0
    • A Anonymous_Banned275
      22 Jun 2022, 17:16

      @VRonin

      I am missing something here , I do not understand the error .

      6ec658f0-4a0b-4ee7-8125-28777a12747f-image.png

      I need to read-up on QRegularExpressionMatch - but I think you are on right track...

      Would you kindly explain in few words what the code is doing ?
      I think that would help me...

      J Offline
      J Offline
      JonB
      wrote on 22 Jun 2022, 17:24 last edited by JonB
      #15

      @AnneRanch

      I am missing something here , I do not understand the error .

      https://doc.qt.io/qt-6/qregularexpressionmatchiterator.html#details

      Starting with Qt 6.0, it is also possible to simply use the result of QRegularExpression::globalMatch in a range-based for loop, for instance like this:
      ...
      for (const QRegularExpressionMatch &match : re.globalMatch(subject)) {

      Are you using Qt6 or Qt5?

      1 Reply Last reply
      1
      • A Offline
        A Offline
        Anonymous_Banned275
        wrote on 22 Jun 2022, 22:33 last edited by Anonymous_Banned275
        #16

        I hope this post does not distracts from the discussion .

        1. I believe the whole concept to "search for individual ascii characters" was misleading . I have been there before and using "words" "w" should make more sense from start. .

        2. The code snippet is "work in progress", hence has some stuff not really needed at this point.

        3. As seen , I can retieve "word" LIST m but I am stomped on how to get QString, not a :list":

        SOLVED
        QString test = match.captured();
        qDebug() <<"match name from ( list ) " << test;

        Code

                        line = stream.readLine();
                        //qDebug() <<"Stream raw line  ";
                        qDebug() <<"stream raw line  \n " << line ;
        
                        // extracts the words
        QRegularExpression re("(\\w+)");
        QString subject(line);
        QString *capture_name; //  = "                            ";
        QRegularExpressionMatchIterator i = re.globalMatch(subject);
        while (i.hasNext()) {
            QRegularExpressionMatch match = i.next();
            //  qDebug() <<"match (next)     " << i.next() ;
             qDebug() <<"match     " << match ;
        
        THIS SORT OF WORKS 
             qDebug() <<"match   list  " << match.capturedTexts();
        
        HOW TO GET INDIVIDUAL QSTRING HERE 
        **?????**
         **//     qDebug() <<"match  name ( from  list )  " << match.captured(*capture_name);**
        HOW TO GET INDIVIDUAL QSTRING HERE 
        
        }
        
        
        

        Output

        Stream file 
        Stream file ArrayIndex  0
        stream raw line  
          "\u0001\u001B[1;39m\u0002Menu main:\u0001\u001B[0m\u0002"
        match      QRegularExpressionMatch(Valid, has match: 0:(3, 4, "1"), 1:(3, 4, "1"))
        match   list  match.captured( ("1", "1")
        match      QRegularExpressionMatch(Valid, has match: 0:(5, 8, "39m"), 1:(5, 8, "39m"))
        match   list   ("39m", "39m")
        match      QRegularExpressionMatch(Valid, has match: 0:(9, 13, "Menu"), 1:(9, 13, "Menu"))
        **match   list   ("Menu", "Menu")**
        match      QRegularExpressionMatch(Valid, has match: 0:(14, 18, "main"), 1:(14, 18, "main"))
        **match   list   ("main", "main")**
        match      QRegularExpressionMatch(Valid, has match: 0:(22, 24, "0m"), 1:(22, 24, "0m"))
        match   list   ("0m", "0m")
        QRegularExpression remove ascii applied  
          "\u0001\u001B[1;39\u0002 :\u0001\u001B[0\u0002"
        single character DONE 
        
        V 1 Reply Last reply 24 Jun 2022, 09:08
        0
        • A Offline
          A Offline
          Anonymous_Banned275
          wrote on 23 Jun 2022, 16:08 last edited by
          #17

          I am trying to simplify the process

          This regular expression works and removes all control code

          QString result = inString.remove(QRegularExpression("[^\w\d ]+"));
          qDebug() <<"QRegularExpression remove ascii applied \n " << result;

          This regal expression DOES NOT WORK
          I get run time error

          QString::replace: invalid QRegularExpression object

          It supposedly remove all control code

          result  = inString.remove(QRegularExpression("[^\\u0000-\\u007F]+"));
                  qDebug() <<"QRegularExpression remove ascii applied  \n " << result;
          

          return result;

          C J 2 Replies Last reply 23 Jun 2022, 16:56
          0
          • A Anonymous_Banned275
            23 Jun 2022, 16:08

            I am trying to simplify the process

            This regular expression works and removes all control code

            QString result = inString.remove(QRegularExpression("[^\w\d ]+"));
            qDebug() <<"QRegularExpression remove ascii applied \n " << result;

            This regal expression DOES NOT WORK
            I get run time error

            QString::replace: invalid QRegularExpression object

            It supposedly remove all control code

            result  = inString.remove(QRegularExpression("[^\\u0000-\\u007F]+"));
                    qDebug() <<"QRegularExpression remove ascii applied  \n " << result;
            

            return result;

            C Offline
            C Offline
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on 23 Jun 2022, 16:56 last edited by
            #18

            @AnneRanch said in using reqular expression wrong:

            This regal expression DOES NOT WORK

            Because \u0000 and \u007F are not valid for pcre -> https://www.regular-expressions.info/unicode.html#codepoint

            Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
            Visit the Qt Academy at https://academy.qt.io/catalog

            1 Reply Last reply
            2
            • A Anonymous_Banned275
              23 Jun 2022, 16:08

              I am trying to simplify the process

              This regular expression works and removes all control code

              QString result = inString.remove(QRegularExpression("[^\w\d ]+"));
              qDebug() <<"QRegularExpression remove ascii applied \n " << result;

              This regal expression DOES NOT WORK
              I get run time error

              QString::replace: invalid QRegularExpression object

              It supposedly remove all control code

              result  = inString.remove(QRegularExpression("[^\\u0000-\\u007F]+"));
                      qDebug() <<"QRegularExpression remove ascii applied  \n " << result;
              

              return result;

              J Offline
              J Offline
              JonB
              wrote on 23 Jun 2022, 17:00 last edited by JonB
              #19

              @AnneRanch
              As @Christian-Ehrlicher has said.

              That should be QRegularExpression("[^\\000-\\177]+")

              However it will not do what you intend. It will remove all ASCII characters, as the comment said, and return an empty string.

              I suspect you are wanting to try:

              result  = inString.remove(QRegularExpression("[^\\000-\\037]+"));
              

              which will remove just the characters you have which are non-ASCII-printable control characters.
              Your \u0001\u001B[1;39m\u0002export should result in [1;39mexport.

              1 Reply Last reply
              0
              • A Offline
                A Offline
                Anonymous_Banned275
                wrote on 23 Jun 2022, 17:50 last edited by
                #20

                I am not sure linking to other forums is OK , but here is a part of it

                I am trying to port the Java code to C++ and this reference claims that
                the "controls characters " are identified as "[^\u0000-\u007F]"

                and that is my objective "remove" all control characters.

                And this removes ascii , not control characters>

                QString result = inString.remove(QRegularExpression("[^\000-\037]+"));

                and that has been my issue since I started this - remove control characters using this expression "[^\000-\037]+"));

                I thin I am not using "remove" and plain "match the expression " correctly .

                https://stackoverflow.com/questions/24229262/match-non-printable-non-ascii-characters-and-remove-from-text
                public static string RemoveTroublesomeCharacters(string inString)
                {
                if (inString == null)
                {
                return null;
                }

                else
                {
                    char ch;
                    Regex regex = new Regex(@"[^\u0000-\u007F]", RegexOptions.IgnoreCase);
                    Match charMatch = regex.Match(inString);
                
                J 1 Reply Last reply 23 Jun 2022, 17:55
                0
                • A Anonymous_Banned275
                  23 Jun 2022, 17:50

                  I am not sure linking to other forums is OK , but here is a part of it

                  I am trying to port the Java code to C++ and this reference claims that
                  the "controls characters " are identified as "[^\u0000-\u007F]"

                  and that is my objective "remove" all control characters.

                  And this removes ascii , not control characters>

                  QString result = inString.remove(QRegularExpression("[^\000-\037]+"));

                  and that has been my issue since I started this - remove control characters using this expression "[^\000-\037]+"));

                  I thin I am not using "remove" and plain "match the expression " correctly .

                  https://stackoverflow.com/questions/24229262/match-non-printable-non-ascii-characters-and-remove-from-text
                  public static string RemoveTroublesomeCharacters(string inString)
                  {
                  if (inString == null)
                  {
                  return null;
                  }

                  else
                  {
                      char ch;
                      Regex regex = new Regex(@"[^\u0000-\u007F]", RegexOptions.IgnoreCase);
                      Match charMatch = regex.Match(inString);
                  
                  J Offline
                  J Offline
                  JonB
                  wrote on 23 Jun 2022, 17:55 last edited by JonB
                  #21

                  @AnneRanch
                  That code you are trying to use is for regular expressions understood by .NET. They are not identical to those used by Qt.

                  And this removes ascii , not control characters>

                  QString result = inString.remove(QRegularExpression("[^\\000-\\037]+"));

                  Just remove the ^ I wrote (I forgot you were removing rather than retaining). Should be:

                  QString result = inString.remove(QRegularExpression("[\\000-\\037]+"));
                  
                  1 Reply Last reply
                  0
                  • A Anonymous_Banned275
                    22 Jun 2022, 22:33

                    I hope this post does not distracts from the discussion .

                    1. I believe the whole concept to "search for individual ascii characters" was misleading . I have been there before and using "words" "w" should make more sense from start. .

                    2. The code snippet is "work in progress", hence has some stuff not really needed at this point.

                    3. As seen , I can retieve "word" LIST m but I am stomped on how to get QString, not a :list":

                    SOLVED
                    QString test = match.captured();
                    qDebug() <<"match name from ( list ) " << test;

                    Code

                                    line = stream.readLine();
                                    //qDebug() <<"Stream raw line  ";
                                    qDebug() <<"stream raw line  \n " << line ;
                    
                                    // extracts the words
                    QRegularExpression re("(\\w+)");
                    QString subject(line);
                    QString *capture_name; //  = "                            ";
                    QRegularExpressionMatchIterator i = re.globalMatch(subject);
                    while (i.hasNext()) {
                        QRegularExpressionMatch match = i.next();
                        //  qDebug() <<"match (next)     " << i.next() ;
                         qDebug() <<"match     " << match ;
                    
                    THIS SORT OF WORKS 
                         qDebug() <<"match   list  " << match.capturedTexts();
                    
                    HOW TO GET INDIVIDUAL QSTRING HERE 
                    **?????**
                     **//     qDebug() <<"match  name ( from  list )  " << match.captured(*capture_name);**
                    HOW TO GET INDIVIDUAL QSTRING HERE 
                    
                    }
                    
                    
                    

                    Output

                    Stream file 
                    Stream file ArrayIndex  0
                    stream raw line  
                      "\u0001\u001B[1;39m\u0002Menu main:\u0001\u001B[0m\u0002"
                    match      QRegularExpressionMatch(Valid, has match: 0:(3, 4, "1"), 1:(3, 4, "1"))
                    match   list  match.captured( ("1", "1")
                    match      QRegularExpressionMatch(Valid, has match: 0:(5, 8, "39m"), 1:(5, 8, "39m"))
                    match   list   ("39m", "39m")
                    match      QRegularExpressionMatch(Valid, has match: 0:(9, 13, "Menu"), 1:(9, 13, "Menu"))
                    **match   list   ("Menu", "Menu")**
                    match      QRegularExpressionMatch(Valid, has match: 0:(14, 18, "main"), 1:(14, 18, "main"))
                    **match   list   ("main", "main")**
                    match      QRegularExpressionMatch(Valid, has match: 0:(22, 24, "0m"), 1:(22, 24, "0m"))
                    match   list   ("0m", "0m")
                    QRegularExpression remove ascii applied  
                      "\u0001\u001B[1;39\u0002 :\u0001\u001B[0\u0002"
                    single character DONE 
                    
                    V Offline
                    V Offline
                    VRonin
                    wrote on 24 Jun 2022, 09:08 last edited by
                    #22

                    @AnneRanch said in using reqular expression wrong:

                    THIS SORT OF WORKS
                    qDebug() <<"match list " << match.capturedTexts();

                    HOW TO GET INDIVIDUAL QSTRING HERE

                    match.captured(0);

                    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                    ~Napoleon Bonaparte

                    On a crusade to banish setIndexWidget() from the holy land of Qt

                    J 1 Reply Last reply 24 Jun 2022, 09:17
                    0
                    • V VRonin
                      24 Jun 2022, 09:08

                      @AnneRanch said in using reqular expression wrong:

                      THIS SORT OF WORKS
                      qDebug() <<"match list " << match.capturedTexts();

                      HOW TO GET INDIVIDUAL QSTRING HERE

                      match.captured(0);

                      J Offline
                      J Offline
                      JonB
                      wrote on 24 Jun 2022, 09:17 last edited by JonB
                      #23

                      @VRonin
                      If the OP ever returns to look at the answers to this question, it would be a shame if she did not first try the simple

                      QString result = inString.remove(QRegularExpression("[\\000-\\037]+"));
                      

                      at least to see if that is acceptable to her, compared to other more complex regular expression solutions....

                      [I have said that none proposed so far will be perfect, she would have to deal properly with removing just the ANSI escape sequences if she wants it to be really right.]

                      1 Reply Last reply
                      1
                      • C Offline
                        C Offline
                        ChrisW67
                        wrote on 24 Jun 2022, 11:21 last edited by
                        #24

                        @AnneRanch said in using reqular expression wrong:

                        I am trying to port the Java code to C++ and this reference claims that
                        the "controls characters " are identified as "[^\u0000-\u007F]"

                        Well, that reference is wrong. This is the Unicode basic Latin page, covering code points from 0 through 127 decimal, which were specifically designed to be identical to ASCII codes. You will see that only the first 32 code points (0x0000 through 0x001F) and last code point (0x007f, Del) are non-printables: the remainder are printable characters. There are other non-printables outside this range also.

                        and that is my objective "remove" all control characters.
                        And this removes ascii , not control characters>
                        QString result = inString.remove(QRegularExpression("[^\000-\037]+"));
                        and that has been my issue since I started this - remove control characters using this expression "[^\000-\037]+"));

                        The regular expression matches any run of characters that is not in the range 0 to 31 decimal. You ask Qt to remove any character that the pattern matches: it does, leaving only those things in the control character block. You want the opposite of that.

                        It turns out that the documented regular expression dialect allows the POSIX character classes which can make life easier:

                        #include <QCoreApplication>
                        #include <QString>
                        #include <QRegularExpression>
                        #include <QDebug>
                        
                        int main(int argc, char **argv) {
                                QCoreApplication app(argc, argv);
                        
                                QString testString("ABC\tabc\177DEF-def\n\007");
                        
                                // following removes all the ASCII printables (i.e. your broken result)
                                QString temp(testString);
                                temp.remove(QRegularExpression("[^\\000-\\037]+"));
                                qDebug() << testString << "==>" << temp;
                        
                                // following removes all except the ASCII printables
                                temp = testString;
                                temp.remove(QRegularExpression("[\\000-\\037\\177]+"));
                                qDebug() << testString << "==>" << temp;
                        
                                // Following uses a POSIX character class to remove control characters
                                // (which include TAB and NL).
                                temp = testString;
                                temp.remove(QRegularExpression("[[:cntrl:]]+"));
                                qDebug() << testString << "==>" << temp;
                        
                                return 0;
                        }
                        

                        Output:

                        "ABC\tabc\u007FDEF-def\n\u0007" ==> "\t\n\u0007"
                        "ABC\tabc\u007FDEF-def\n\u0007" ==> "ABCabcDEF-def"
                        "ABC\tabc\u007FDEF-def\n\u0007" ==> "ABCabcDEF-def"
                        
                        J 1 Reply Last reply 24 Jun 2022, 11:27
                        1
                        • C ChrisW67
                          24 Jun 2022, 11:21

                          @AnneRanch said in using reqular expression wrong:

                          I am trying to port the Java code to C++ and this reference claims that
                          the "controls characters " are identified as "[^\u0000-\u007F]"

                          Well, that reference is wrong. This is the Unicode basic Latin page, covering code points from 0 through 127 decimal, which were specifically designed to be identical to ASCII codes. You will see that only the first 32 code points (0x0000 through 0x001F) and last code point (0x007f, Del) are non-printables: the remainder are printable characters. There are other non-printables outside this range also.

                          and that is my objective "remove" all control characters.
                          And this removes ascii , not control characters>
                          QString result = inString.remove(QRegularExpression("[^\000-\037]+"));
                          and that has been my issue since I started this - remove control characters using this expression "[^\000-\037]+"));

                          The regular expression matches any run of characters that is not in the range 0 to 31 decimal. You ask Qt to remove any character that the pattern matches: it does, leaving only those things in the control character block. You want the opposite of that.

                          It turns out that the documented regular expression dialect allows the POSIX character classes which can make life easier:

                          #include <QCoreApplication>
                          #include <QString>
                          #include <QRegularExpression>
                          #include <QDebug>
                          
                          int main(int argc, char **argv) {
                                  QCoreApplication app(argc, argv);
                          
                                  QString testString("ABC\tabc\177DEF-def\n\007");
                          
                                  // following removes all the ASCII printables (i.e. your broken result)
                                  QString temp(testString);
                                  temp.remove(QRegularExpression("[^\\000-\\037]+"));
                                  qDebug() << testString << "==>" << temp;
                          
                                  // following removes all except the ASCII printables
                                  temp = testString;
                                  temp.remove(QRegularExpression("[\\000-\\037\\177]+"));
                                  qDebug() << testString << "==>" << temp;
                          
                                  // Following uses a POSIX character class to remove control characters
                                  // (which include TAB and NL).
                                  temp = testString;
                                  temp.remove(QRegularExpression("[[:cntrl:]]+"));
                                  qDebug() << testString << "==>" << temp;
                          
                                  return 0;
                          }
                          

                          Output:

                          "ABC\tabc\u007FDEF-def\n\u0007" ==> "\t\n\u0007"
                          "ABC\tabc\u007FDEF-def\n\u0007" ==> "ABCabcDEF-def"
                          "ABC\tabc\u007FDEF-def\n\u0007" ==> "ABCabcDEF-def"
                          
                          J Offline
                          J Offline
                          JonB
                          wrote on 24 Jun 2022, 11:27 last edited by
                          #25

                          @ChrisW67 said in using reqular expression wrong:

                          You want the opposite of that.

                          I did reply earlier:

                          Just remove the ^ I wrote (I forgot you were removing rather than retaining). Should be:

                          QString result = inString.remove(QRegularExpression("[\\000-\\037]+"));
                          
                          1 Reply Last reply
                          1
                          • A Offline
                            A Offline
                            Anonymous_Banned275
                            wrote on 24 Jun 2022, 15:16 last edited by Anonymous_Banned275
                            #26
                            1. JobB please get off your horse - this is a discussions and we all have difference of opinions - which is what discussions are for.
                              ( You remind me of "study group " I had years ago where certain cultures insisted on "we all have to have same opinion and agree ... then we can go home ')
                            2. I did state I am porting from Java , hence the source ( I used ) is different...
                              ( I realize things get missed . miss-read etc. )
                            3. There are two concepts ( to get the job done ) - so far
                              identify all ASCII characters
                              remove all control characters

                            Here is the code :

                            #ifdef BYPASS
                                  
                                    QRegularExpression re("[^\\w\\d (:/<>) ]+");
                                    QString result  = inString.remove(re); // keep  all ascii plus some 
                                    qDebug() <<"remove all controls \n    " << result;
                                    return result;
                            #endif
                                    
                                    QString result = inString.remove(QRegularExpression("[\\000-\\037]+"));
                                    qDebug() <<"remove all controls \n    " << result;
                                    return result;
                            

                            They both leave some unwanted characters. Those are easy to remove after
                            "regular expression" is done.
                            4. Looks as "match" is OK but too complex to accomplish what I want.

                            1. AS the original title said - I was using the concept wrong - did not pay attention to actual expression - identifying or deleting stuff.

                            I really appreciate everybody input , it has been educational.

                            Cheers

                            J 1 Reply Last reply 24 Jun 2022, 16:26
                            0
                            • A Anonymous_Banned275
                              24 Jun 2022, 15:16
                              1. JobB please get off your horse - this is a discussions and we all have difference of opinions - which is what discussions are for.
                                ( You remind me of "study group " I had years ago where certain cultures insisted on "we all have to have same opinion and agree ... then we can go home ')
                              2. I did state I am porting from Java , hence the source ( I used ) is different...
                                ( I realize things get missed . miss-read etc. )
                              3. There are two concepts ( to get the job done ) - so far
                                identify all ASCII characters
                                remove all control characters

                              Here is the code :

                              #ifdef BYPASS
                                    
                                      QRegularExpression re("[^\\w\\d (:/<>) ]+");
                                      QString result  = inString.remove(re); // keep  all ascii plus some 
                                      qDebug() <<"remove all controls \n    " << result;
                                      return result;
                              #endif
                                      
                                      QString result = inString.remove(QRegularExpression("[\\000-\\037]+"));
                                      qDebug() <<"remove all controls \n    " << result;
                                      return result;
                              

                              They both leave some unwanted characters. Those are easy to remove after
                              "regular expression" is done.
                              4. Looks as "match" is OK but too complex to accomplish what I want.

                              1. AS the original title said - I was using the concept wrong - did not pay attention to actual expression - identifying or deleting stuff.

                              I really appreciate everybody input , it has been educational.

                              Cheers

                              J Offline
                              J Offline
                              JonB
                              wrote on 24 Jun 2022, 16:26 last edited by JonB
                              #27

                              @AnneRanch said in using reqular expression wrong:

                              JobB please get off your horse - this is a discussions and we all have difference of opinions - which is what discussions are for.

                              What are you talking about? I gave you the code you need to remove all non-ASCII chars. That's all. And as usual got abuse back. I know you are rude to everybody, but any reason to single me out? :) Oh, and I just saw you use what I suggested and still are cross with me!

                              A 1 Reply Last reply 24 Jun 2022, 16:42
                              0
                              • J JonB
                                24 Jun 2022, 16:26

                                @AnneRanch said in using reqular expression wrong:

                                JobB please get off your horse - this is a discussions and we all have difference of opinions - which is what discussions are for.

                                What are you talking about? I gave you the code you need to remove all non-ASCII chars. That's all. And as usual got abuse back. I know you are rude to everybody, but any reason to single me out? :) Oh, and I just saw you use what I suggested and still are cross with me!

                                A Offline
                                A Offline
                                Anonymous_Banned275
                                wrote on 24 Jun 2022, 16:42 last edited by
                                #28

                                @JonB ok let's get serious Your posts are great technically, but you just cannot say it without making comments - such as " if he comes back ..."
                                "I told you so ..." etc.
                                I realize that each of us has different way to express stuff and that is perfectly OK .
                                My gut feeling is - I am not native English speaker and not used to this sentence structure:

                                " ...YOU can do it this way , I ALREADY TOLD YOU SO . "

                                In may native language I would say
                                " ... do it this way, "

                                Cheers

                                J 1 Reply Last reply 24 Jun 2022, 16:47
                                0
                                • A Anonymous_Banned275
                                  24 Jun 2022, 16:42

                                  @JonB ok let's get serious Your posts are great technically, but you just cannot say it without making comments - such as " if he comes back ..."
                                  "I told you so ..." etc.
                                  I realize that each of us has different way to express stuff and that is perfectly OK .
                                  My gut feeling is - I am not native English speaker and not used to this sentence structure:

                                  " ...YOU can do it this way , I ALREADY TOLD YOU SO . "

                                  In may native language I would say
                                  " ... do it this way, "

                                  Cheers

                                  J Offline
                                  J Offline
                                  JonB
                                  wrote on 24 Jun 2022, 16:47 last edited by JonB
                                  #29

                                  @AnneRanch
                                  Ah, OK. The trouble is we seem to tell you stuff and you often seem to ignore it and not act on it. That can be frustrating. But I will (try to) bear in mind what you say when replying in your threads :)

                                  1 Reply Last reply
                                  0
                                  • A Offline
                                    A Offline
                                    Anonymous_Banned275
                                    wrote on 24 Jun 2022, 16:52 last edited by Anonymous_Banned275
                                    #30

                                    SOLVED
                                    use QString "replace" instead...

                                    I need more help making the actual expression

                                    QRegularExpression re("[\000-\037[1;139m]+")

                                    This works BUT deletes EVERY occurrence of "m" .

                                    I like to delete ONLY this string "[1;139m"

                                    PS
                                    can anybody recommend "use regular expressing examples in C++"?
                                    I am getting too many "tutorials" and like to know group recommendation .

                                    This one does not really explain stuff, just looks pretty (IMHO) ,,,

                                    https://www.softwaretestinghelp.com/regex-in-cpp/

                                    J 1 Reply Last reply 24 Jun 2022, 17:24
                                    0
                                    • A Anonymous_Banned275
                                      24 Jun 2022, 16:52

                                      SOLVED
                                      use QString "replace" instead...

                                      I need more help making the actual expression

                                      QRegularExpression re("[\000-\037[1;139m]+")

                                      This works BUT deletes EVERY occurrence of "m" .

                                      I like to delete ONLY this string "[1;139m"

                                      PS
                                      can anybody recommend "use regular expressing examples in C++"?
                                      I am getting too many "tutorials" and like to know group recommendation .

                                      This one does not really explain stuff, just looks pretty (IMHO) ,,,

                                      https://www.softwaretestinghelp.com/regex-in-cpp/

                                      J Offline
                                      J Offline
                                      JonB
                                      wrote on 24 Jun 2022, 17:24 last edited by JonB
                                      #31

                                      @AnneRanch
                                      It gets harder to write the the regular expression for that case.

                                      In all the examples you have shown so far, like

                                      stream raw line  
                                        "\u0001\u001B[1;39m\u0002export          \u0001\u001B[0m\u0002Print environment variables"
                                      

                                      they all look like

                                      \u0001...\u0002
                                      

                                      That means they have an ASCII-1 at the start and an ASCII-2 at the end. If all your cases look like this, then:

                                      line.remove(QRegularExpression("\\001[^\\002]*\\002"));
                                      

                                      should get rid of just what you want, and leave no "artefact bits".

                                      1 Reply Last reply
                                      0

                                      23/31

                                      24 Jun 2022, 09:17

                                      • Login

                                      • Login or register to search.
                                      23 out of 31
                                      • First post
                                        23/31
                                        Last post
                                      0
                                      • Categories
                                      • Recent
                                      • Tags
                                      • Popular
                                      • Users
                                      • Groups
                                      • Search
                                      • Get Qt Extensions
                                      • Unsolved