Community
    • Login

    Find/Replace number with Increment Value

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    12 Posts 4 Posters 1.8k 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.
    • PeterJonesP
      PeterJones @DJSpirosG
      last edited by

      @DJSpirosG ,

      Yes, PythonScript is the way to go. There is even an example of a callback which does “add one” (search for add_1 in the PS “Editor Object” docs)

      PeterJonesP 1 Reply Last reply Reply Quote 0
      • PeterJonesP
        PeterJones @PeterJones
        last edited by PeterJones

        …

        and here is a post where I show it in this Forum

        addenda: regex would be something like (\\[\#\d+\\]) /addenda

        DJSpirosGD 1 Reply Last reply Reply Quote 1
        • DJSpirosGD
          DJSpirosG @PeterJones
          last edited by

          @PeterJones thanks for the help!

          I’am burned…
          I don’t exactly understand how to succeed what i want to!
          Sorry!

          PeterJonesP 1 Reply Last reply Reply Quote 0
          • PeterJonesP
            PeterJones @DJSpirosG
            last edited by

            @DJSpirosG ,

            Sorry, given that you knew PythonScript would be required, I thought you already knew how to use it.

            if this is a one-off, just use the PythonScript, show console, and type the next 3 filled lines (plus a couple of extra returns between the function and the call, because the console requires an extra newline to end a function definition…)

            def add_1(m):
                return m.group(1) + str(int(m.group(2)) + 1) + m.group(3)
            
            
            editor.rereplace('(\[\#)(\d+)(\])', add_1);
            

            Yes, after debugging, I changed the regex to make the replacement easier for me.

            If this is going to be used more than once, do Python Script > New Script, and paste in those four lines, and use the PythonScript menus to run the script and/or assign it to the Run menu…

            DJSpirosGD 1 Reply Last reply Reply Quote 2
            • DJSpirosGD
              DJSpirosG @PeterJones
              last edited by DJSpirosG

              @PeterJones If i am right this adds one to the existed digit inside the brackets.
              What i actually want is to add one to the next bracket so if bracket one is [#1] the next one to be [#2].

              The example below is my actual problem.
              i want the script to calculate the digit inside the previous bracket [#34] and replace the next one [#1] with [#35] the [#2] with [#36] and so on !

              [#34]
              T=2
              F=INITIALKEY
              1=E maj
              2=12B
              3=0|0
              
              [#1]
              T=2
              F=INITIALKEY
              1=Gm
              2=1A
              3=0|0
              
              [#2]
              T=2
              F=INITIALKEY
              1=A\u266dm
              2=1A
              3=0|0```
              PeterJonesP 1 Reply Last reply Reply Quote 0
              • PeterJonesP
                PeterJones @DJSpirosG
                last edited by

                @DJSpirosG ,

                I believe this does what you want:

                prev = None
                def renumber(m):
                    global prev
                    if prev == None:
                        prev = int(m.group(2))
                    else:
                        prev = prev + 1
                
                    return m.group(1) + str(prev) + m.group(3)
                
                editor.rereplace(r'^(\[#)(\d+)(\])', renumber);
                
                
                DJSpirosGD 1 Reply Last reply Reply Quote 1
                • DJSpirosGD
                  DJSpirosG @PeterJones
                  last edited by DJSpirosG

                  @PeterJones Thank you for your time appreciated!

                  It needs a small fix (adding some \ ) and it works flawlessly!

                  editor.rereplace(r'^(\[\#)(\d+)(\])', renumber);
                  PeterJonesP 1 Reply Last reply Reply Quote 0
                  • PeterJonesP
                    PeterJones @DJSpirosG
                    last edited by PeterJones

                    @DJSpirosG ,

                    Sorry, even in ```, the forum strips \\[ to become [ under certain circumstances
                    a3421931-2e2b-41ee-ac1c-2a54fcc2f2a2-image.png

                    DJSpirosGD 1 Reply Last reply Reply Quote 1
                    • DJSpirosGD
                      DJSpirosG @PeterJones
                      last edited by

                      @PeterJones
                      HaHa
                      i was so pissed of…
                      i was trying to post the correct one but i couldn’t…
                      i tried to edit my post about 100 times in the last minute!!!

                      Thanks once again!

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

                        Hello @peterjones, @DJSpirosG and All,

                        I suppose that the regex, in the Python script, is r'^(\\[#)(\d+)(\\])' and NOT r'^(\[#)(\d+)(\])' !!

                        If so, Peter, I can edit your post and make the corrections. Just tell me !

                        Remark : To explicitly write the literal strings \\[ and \\], in our forum, you need to write them as \\\[ and \\\]

                        Note also that, unfortunately, the Preview panel does not show the right layout :-(( Things are OK when you click on the Submit button, only !

                        BR

                        guy038

                        P.S. :

                        To write the text, of the Remark line, just above, I needed to write :

                        • First, 2 consecutive \ before each square bracket !

                        • Second, 3 consecutive \ before each square bracket !

                        1 Reply Last reply Reply Quote 3
                        • prahladmifourP
                          prahladmifour
                          last edited by

                          This post is deleted!
                          1 Reply Last reply Reply Quote -5
                          • First post
                            Last post
                          The Community of users of the Notepad++ text editor.
                          Powered by NodeBB | Contributors