Community
    • Login

    RegEx Expression help with keeping TEXT and replacing formating codes only.

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    6 Posts 3 Posters 2.2k Views
    Loading More Posts
    • 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.
    • Elijah 5801E
      Elijah 5801
      last edited by

      This RegEx Expression coding is way over my head, however if someone can please help me with this request, I will be well on my way.

      I have many lines of text strings which has before and after formatting, for example…
      {\i\cf15 I love Andrea}
      {\i\cf15 I love Betty}
      {\i\cf15 I love Cathy}
      etc…

      I want to replace formatting so that the new lines of text will be…
      <i>I love Andrea</i>
      <i>I love Betty</i>
      <i>I love Cathy</i>

      I know I could be done in two steps, like…
      Search for all {\i\cf15 , and replace with <i>
      Search for all } , and replace with </i>

      However this will interfere with other similar codes, so if possible, I need to do this search and replace procedure in one step.

      I will appreciate anyones help on this. Thanks.

      1 Reply Last reply Reply Quote -1
      • 古旮古
        古旮
        last edited by

        This is so easy. You ever searched regex syntax?
        Find: \Q{\i\cf15\E(.+?)\Q}\E
        Replace with: <i>\1</i>

        1 Reply Last reply Reply Quote 0
        • Elijah 5801E
          Elijah 5801
          last edited by

          You said “This is so easy” LOL :)

          Thank you so much. You are a star!

          It worked, but I would not have worked it out for myself in a 100 years. This stuff is way over my head.

          I’m going to make a BIG NOTE of this, so I never have trouble with it again.

          Thanks again.

          1 Reply Last reply Reply Quote 0
          • guy038G
            guy038
            last edited by

            Hello @elija-5801 and All,

            Hi, @elija-5801, the @古旮 regex S/R is easy enough to understand :

            • Everything between the regex boundaries \Q and \E is taken as a literal string. So, the regex engine searches, first, for the literal \i\cf15 string

            • At the end, of the regex, again the \Q}\E syntax looks for the litteral } symbol

            • And, between these literal strings, the regex engine tries to match the (.+?) regex, which represents :

              • Any single standard character ( assuming the . matches newline option is not set

              • Present one or more times, due to the + quantifier, ( shortened syntax of {1,} )

              • Till the very first occurrence of the } symbol, because of the ? special symbol

              • All the characters caught are stored, as group 1, thanks to the parentheses

            • In replacement, it re-writes :

              • The literal string <i>

              • All the characters of group 1 ( Andrea, Betty , Cathy ), because of the \1 syntax

              • The literal string </i>


            Here is, below, my alternative solution :

            SEARCH (?i-s)\{([^a-z].*?\h+)?|(\h*\})

            REPLACE ?2</i>:<i>

            With my version :

            • The braces may be followed or preceded by some horizontal blank characters ( Space or Tabulation chars )

            • I supposed that the first part ( the reference part ! ), if present, must :

              • Begin with a NON-letter character, whatever its case

              • End with, at least, one horizontal blank char ( Space or Tabulation )


            Notes :

            • In the searched regex :

              • First the (?i-s) modifiers forces the regex engine to consider that :

                • The search is case insensitive

                • The . dot stands for any single standard character

              • Then, the regex engine looks for, either, any alternative, separated by the | symbol :

                • The regex \{([^a-z].*?\h+)? which tries to catch a literal { char, followed with the optional block [^a-z].*?\h+ ( due to the ? quantifier ), which represents, itself, a non-letter char, followed with the smallest range of standard characters, even null, ended with some horizontal blank characters

                • The regex (\h*\}) looks for possible horizontal blank characters, followed by a literal } symbol, stored as group 2, as embedded within parentheses

            • The replacement regex ?2</i>:<i> is a conditional replacement structure, which rewrites :

              • The literal string </i> if group 2 exits

              • The literal string <i> if group 2 does not exit


            So, for instance, with the text, below :

            {\i\cf15 I love Andrea}
            {\Te-12  	   	  I love Betty}
            {I love Cathy   	  }
            {    I love Marie}
            {789 I love Suzan}
            

            You would obtain :

            <i>I love Andrea</i>
            <i>I love Betty</i>
            <i>I love Cathy</i>
            <i>I love Marie</i>
            <i>I love Suzan</i>
            

            Cheers,

            guy038

            P.S. :

            For noob people, about regular expressions concept and syntax, begin with that article, in N++ Wiki :

            http://docs.notepad-plus-plus.org/index.php/Regular_Expressions

            In addition, you’ll find good documentation, about the Boost C++ Regex library, v1.55.0 ( similar to the PERL Regular Common Expressions, v5.8 ), used by Notepad++, since its 6.0 version, at the TWO addresses below :

            http://www.boost.org/doc/libs/1_55_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html

            http://www.boost.org/doc/libs/1_55_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html

            • The FIRST link explains the syntax, of regular expressions, in the SEARCH part

            • The SECOND link explains the syntax, of regular expressions, in the REPLACEMENT part


            You may, also, look for valuable information, on the sites, below :

            http://www.regular-expressions.info

            http://www.rexegg.com

            http://perldoc.perl.org/perlre.html

            Be aware that, as any documentation, it may contain some errors ! Anyway, if you detected one, that’s good news : you’re improving ;-))

            Elijah 5801E 1 Reply Last reply Reply Quote 1
            • Elijah 5801E
              Elijah 5801 @guy038
              last edited by

              Hello @guy038

              Your extensive reply on posts is over and beyond what I expected, and very much appreciated.

              I have read your examples and expanded notes, and I am now so much wiser to RegEx Expressions.

              Thank you for taking out the time to help out a stranger in another part of the world.

              Thank you. :)

              1 Reply Last reply Reply Quote 1
              • Elijah 5801E
                Elijah 5801
                last edited by

                Almost 2 years ago on 10 March 2018, I asked the community for help on using EXPRESSION mode.
                Within 3 days I got replies from several people.
                I documented this page to remind me of the ANSWERS and the MEMBERS who replied.
                It’s now nearly two years later, and I consider myself a PRO with the amount of work I achieved.
                The amount of work which would normally take me a year to complete, was reduced to just a few seconds.
                From the little you taught me that day in March 2018, opened more doors to more wisdom using the EXPRESSION mode, and I have achieved even far greater things in the last two years.
                If it were not for the great outpouring of help from volunteers like the people who helped me on my way in March 2018, I would still be living in the dark ages labouring away, the long way.
                Thank you! You have no concept of what I achieved by the little SEED of wisdom you planted in me that day.
                So I THANK YOU AGAIN!!!

                1 Reply Last reply Reply Quote 3
                • First post
                  Last post
                The Community of users of the Notepad++ text editor.
                Powered by NodeBB | Contributors