• Login
Community
  • Login

convert lower to upper and upper to lower aftert colon

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
12 Posts 3 Posters 2.4k 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.
  • P
    PeterJones @PeterJones
    last edited by May 31, 2020, 6:04 PM

    FYI:

    The official docs have a section on substitution regex, but the conditional replacements were not explained: https://npp-user-manual.org/docs/searching/#substitutions

    The most recent update to the documentation github has more details on that; it will be in the next release to the doc website (whenever that occurs): https://github.com/notepad-plus-plus/npp-usermanual/blob/852b4ac8a2e667be027d3f7db0a04cfeb2d71eca/content/docs/searching.md#substitution-conditionals

    1 Reply Last reply Reply Quote 1
    • R
      real_1bx @PeterJones
      last edited by May 31, 2020, 6:04 PM

      @PeterJones said in convert lower to upper and upper to lower aftert colon:

      If I am understanding the logic, you want colon-lowercase to become colon-uppercase, and colon-uppercase to become colon-lowercase, and everything after that to be made lowercase, right? If so, then I think this will work for you:

      Thank you very much, i really do appropriate taking time to help me out.
      the logic is i want colon-lowercase to become colon-uppercase, and colon-uppercase to become colon-lowercase but everything after that stay the same i don’t want change it.

      P 1 Reply Last reply May 31, 2020, 6:26 PM Reply Quote 1
      • G
        guy038
        last edited by guy038 May 31, 2020, 6:29 PM May 31, 2020, 6:22 PM

        Hello @real_1bx and All,

        You need to distinguish an uppercase letter from a lowercase letter !

        So, I think that the following regex S/R should work !

        SEARCH (?-is):(([A-Z])|[a-z])(.+)

        REPLACE :(?2\l:\u)\1\L\3

        For instance, the text :

        john:abC232
        smith:SnLf1999
        

        is changed into :

        john:Abc232
        smith:snlf1999
        

        Notes :

        • First, the in-line modifiers (?-is) means that :

          • The search will be carried on, in a non-insensitive way ( -i )

          • Any regex dot symbol matches a single standard character only ( and not line-break chars )

        • Groups involved in the search regex are :

          • Group 1 = ([A-Z])|[a-z], so the first letter after the : char, which may be, either a lower-case or an upper-case letter

          • Group 2 = [A-Z], so the first upper-case letter after the :

          • Group 3 = .+, so all the remaining characters of current line, after the : and a first letter

        • In the replacement regex :

          • : rewrites the colon, first

          • Then, the (?2\l:\u) syntax is a conditional structure which forces the next character to be written :

            • In lower case if group 2 exists, that is to say if an upper case letter has matched

            • In upper case if group 2 does not exist => a lower case letter has matched

          • \1 is the first letter whose case has been modified

          • Finally, \L\3 rewrites all the remaining characters, of current line, in lower-case

        • Note that I do not use the look-behind structure (?<=:) which enable us to use the step by step replacement with repeated hits on the Replace button

        Best Regards,

        guy038

        @peterjones said :

        I am surprised @guy038 hadn’t chimed in already, since he was around a few minutes ago.

        Well, I was chatting for a moment with my son who’s going back to Lyon ;-)

        1 Reply Last reply Reply Quote 2
        • P
          PeterJones @real_1bx
          last edited by May 31, 2020, 6:26 PM

          @real_1bx said in convert lower to upper and upper to lower aftert colon:

          Thank you very much, i really do appropriate taking time to help me out.
          the logic is i want colon-lowercase to become colon-uppercase, and colon-uppercase to become colon-lowercase but everything after that stay the same i don’t want change it.

          Ahh, your \L confused me to thinking you wanted the rest lowercase.

          Just get rid of the third group in find and replace should do it:

          FIND = (?-is)(?<=:)(?:([a-z])|([A-Z]))
          REPLACE = (?1\u$1)(?2\l$2)
          MODE = regular expression

          1 Reply Last reply Reply Quote 0
          • G
            guy038
            last edited by guy038 May 31, 2020, 6:42 PM May 31, 2020, 6:33 PM

            Hi, @real_1bx, @peterjones and All,

            So, I did the same mistake as Peter !

            Thus, my regex S/R should be modified as :

            SEARCH (?-i):(([A-Z])|[a-z])

            REPLACE :(?2\l:\u)\1

            Cheers,

            guy038

            1 Reply Last reply Reply Quote 1
            • G
              guy038
              last edited by guy038 May 31, 2020, 6:55 PM May 31, 2020, 6:51 PM

              @real_1bx, @peterjones and All,

              Last news : we don’t even need an outer group to capture the letter ! So, why not this attempt :

              SEARCH (?-i)(:[A-Z])|:[a-z]

              REPLACE (?1\L:\U)$0


              So the following text :

              john:abC232
              smith:SnLf1999
              

              becomes :

              john:AbC232
              smith:snLf1999
              

              BR,

              guy038

              R 1 Reply Last reply May 31, 2020, 6:58 PM Reply Quote 2
              • R
                real_1bx @guy038
                last edited by May 31, 2020, 6:58 PM

                @guy038
                Thank you very much , that’s saved me a LOT of time.

                1 Reply Last reply Reply Quote 2
                • G
                  guy038
                  last edited by guy038 May 31, 2020, 7:13 PM May 31, 2020, 7:05 PM

                  Hello @real_1bx,

                  I hope that you noticed why I use, this time, the (?1\L:\U)$0 syntax ( and not (?1\l:\u)$0 ), in replacement ?

                  Just because the string to convert in upper / lower case ( $0 ) is two chars long ( a colon : + a letter ) !

                  BR

                  guy038

                  R 1 Reply Last reply May 31, 2020, 9:05 PM Reply Quote 1
                  • R
                    real_1bx @guy038
                    last edited by May 31, 2020, 9:05 PM

                    @guy038 is it possible to delete whole line if there is number after the :
                    i mean the first character after colon not the whole word.
                    like

                    abc:fkls
                    john:13kkmsd
                    smith:kmskl
                    ```
                    **to be**
                    
                    ```
                    abc:fkls
                    smith:kmskl
                    ```
                    1 Reply Last reply Reply Quote 0
                    • G
                      guy038
                      last edited by guy038 May 31, 2020, 10:58 PM May 31, 2020, 10:56 PM

                      Hi, @real_1bx, and All,

                      This time, due to the simultaneous search of an entire line, with its line-break, when a digit follows the colon char, we need, again, two groups, leading up to that regex S/R :

                      SEARCH (?-is)^.+:\d.+\R|((:[A-Z])|:[a-z])

                      REPLACE ?1(?2\L:\U)\1

                      For instance, the input text, below :

                      john:abC232
                      john:13kkmsd
                      smith:SnLf1999
                      

                      would be modified as :

                      john:AbC232
                      smith:snLf1999
                      

                      Best regards,

                      guy038

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