• Login
Community
  • Login

How to replace a specific text in lines that contains a specific word.

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
17 Posts 4 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.
  • A
    Alan Kilborn
    last edited by Jan 24, 2022, 3:15 PM

    You might try:

    find: (?-is)ingot.*?=\Kfalse
    repl: true
    mode: regular expression

    Z 1 Reply Last reply Jan 24, 2022, 3:21 PM Reply Quote 1
    • Z
      Zsombor Szarka @Alan Kilborn
      last edited by Jan 24, 2022, 3:21 PM

      @alan-kilborn Thanks! It was a crazy fast reply!

      It did work almost perfectly. What i discovered, is that there are some lines, that contains “Ingot” (capital i) for some reason, and i would like to change them too. Can you modify your search so it will be independent from that factor? (of Course i can make two replaces with your syntax, i am just curious, what would be the solution for that)

      P A 2 Replies Last reply Jan 24, 2022, 3:23 PM Reply Quote 0
      • P
        PeterJones @Zsombor Szarka
        last edited by PeterJones Jan 24, 2022, 3:23 PM Jan 24, 2022, 3:23 PM

        This post is deleted!
        1 Reply Last reply Reply Quote 0
        • A
          Alan Kilborn @Zsombor Szarka
          last edited by Alan Kilborn Jan 24, 2022, 3:25 PM Jan 24, 2022, 3:24 PM

          @zsombor-szarka said in How to replace a specific text in lines that contains a specific word.:

          some lines, that contains “Ingot” (capital i) for some reason, and i would like to change them too.

          Change the (?-is) part to (?i-s).

          OR

          Make that part (?-s) and then use the Match case checkbox to do your will.

          It did work almost perfectly.

          No it worked perfectly, not almost.
          Just because you left something out of your problem statement doesn’t mean the solution provided was deficient. :-)

          Z 1 Reply Last reply Jan 24, 2022, 4:02 PM Reply Quote 2
          • G
            guy038
            last edited by Jan 24, 2022, 3:31 PM

            Hello @zsombor-szarka, @alan-kilborn, @peterjones and All,

            I may be wrong but I think that the correct search expression is rather :

            SEARCH (?i-s):ingot.*\Kfalse$

            Indeed, the part _false, before the = sign, must not be changed !

            Best Regards,

            guy038

            P A 2 Replies Last reply Jan 24, 2022, 3:33 PM Reply Quote 0
            • P
              PeterJones @guy038
              last edited by Jan 24, 2022, 3:33 PM

              @guy038 said in How to replace a specific text in lines that contains a specific word.:

              Indeed, the part _false, before the = sign, must not be changed !

              That’s why Alan’s expression has the .*?= before the \K, to make sure everything before and including the equals is consumed without change

              1 Reply Last reply Reply Quote 3
              • A
                Alan Kilborn @guy038
                last edited by Jan 24, 2022, 3:35 PM

                @guy038 said in How to replace a specific text in lines that contains a specific word.:

                I may be wrong but I think that the correct search expression

                I think the original is solution is fine.
                Perhaps the ?= in it is confusing (looks maybe like a (?=…) construct?)
                But really it just forces =false to be matched.

                1 Reply Last reply Reply Quote 1
                • G
                  guy038
                  last edited by Jan 24, 2022, 3:39 PM

                  Hi, @zsombor-szarka, @alan-kilborn, @peterjones and All,

                  My bad ! Alan, I didn’t notice the equal sign in your version :-(

                  BR

                  guy038

                  A 1 Reply Last reply Jan 24, 2022, 3:47 PM Reply Quote 1
                  • A
                    Alan Kilborn @guy038
                    last edited by Jan 24, 2022, 3:47 PM

                    @guy038

                    Not a problem, Guy.
                    Like I said maybe I shouldn’t have done it the way I did, because it really does look like that other construct.

                    BTW, good to see you posting.
                    You haven’t been very active lately.
                    Hopefully you are “back” and will be posting on a more regular basis now.

                    1 Reply Last reply Reply Quote 1
                    • Z
                      Zsombor Szarka @Alan Kilborn
                      last edited by Jan 24, 2022, 4:02 PM

                      No it worked perfectly, not almost.
                      Just because you left something out of your problem statement doesn’t mean the solution provided was deficient. :-)

                      Well i can’t argue with that, i should have formulated my sentences better.
                      Anyway now it works as i wanted to, so thanks a lot!

                      Have a wonderful day!

                      A 1 Reply Last reply Jan 24, 2022, 4:26 PM Reply Quote 1
                      • A
                        Alan Kilborn @Zsombor Szarka
                        last edited by Alan Kilborn Jan 24, 2022, 4:27 PM Jan 24, 2022, 4:26 PM

                        @zsombor-szarka

                        I started to learn about the search mechanism of notepad++, but it’s way too complex for me to figure it out. (i spent an hour learning it so far)

                        Well, any time invested in this endeavor is time well spent (for the NEXT time).

                        Can you give … explain it too?

                        I basically gave the syntax: (?-s)ingot.*?=\Kfalse

                        It means:

                        (?-s) : don’t let a following . match a line-ending
                        ingot : match the literal text
                        .*? : match any characters zero or more times, minimally
                        = : match literal equal
                        \K : forget the match to this point (we don’t want to change ingot followed by whatever followed by =)
                        false : match the literal text

                        We replace with only true because the matched text will be false at this point.

                        Z 1 Reply Last reply Jan 24, 2022, 9:12 PM Reply Quote 2
                        • Z
                          Zsombor Szarka @Alan Kilborn
                          last edited by Zsombor Szarka Jan 24, 2022, 9:13 PM Jan 24, 2022, 9:12 PM

                          @alan-kilborn
                          Thanks a lot (again)!
                          I understand everything except this line:

                          (?-s) : don’t let a following . match a line-ending

                          I can’t figure out what do you mean by that… Can you elaborate?

                          A 1 Reply Last reply Jan 24, 2022, 9:23 PM Reply Quote 0
                          • A
                            Alan Kilborn @Zsombor Szarka
                            last edited by Alan Kilborn Jan 24, 2022, 9:25 PM Jan 24, 2022, 9:23 PM

                            @zsombor-szarka said in How to replace a specific text in lines that contains a specific word.:

                            I understand everything except this

                            You even understand the \K fully? :-)

                            Ok so the (?-s) is equivalent to leaving this checkbox unchecked:

                            711e0e73-4177-4d94-a12b-2ac637b4aed8-image.png

                            But what it means is that using a . further along in the expression will NOT match a line-ending character.

                            When you originally said:

                            is to replace all the “=false” texts to “=true” in lines

                            The “in lines” part is a real key that (?-s) should be used.

                            Otherwise, you could get a match like this (definitely unwanted):

                            4011b833-cbb1-4cb8-837f-533cea84f352-image.png

                            Note that I changed your data a bit in the above.

                            See how there is a match on line 10 even though there is no ingot on line 10? The ingot part starts on line 9… :

                            e7e3961a-428a-41ac-a3fa-9d9b8feea192-image.png

                            Note that what I’m showing now is if you use (?s) instead of (?-s). The - turns off the ability to match line ending characters.

                            So the (?-s) is a safety-valve on the expression, in this instance saying “everything must be on the same line”.

                            Hopefully that makes a bit of sense.

                            Z 1 Reply Last reply Jan 24, 2022, 9:56 PM Reply Quote 3
                            • Z
                              Zsombor Szarka @Alan Kilborn
                              last edited by Jan 24, 2022, 9:56 PM

                              @alan-kilborn said in How to replace a specific text in lines that contains a specific word.:

                              So the (?-s) is a safety-valve on the expression, in this instance saying “everything must be on the same line”.

                              This sentence sums it up clearly, after this one i was sure i understood everything what you just wrote.
                              I don’t know why did you ask whether i understood the \k fully, but i did.
                              In fact everything was simple, what probably confused me, is that i did not catch what did you mean by “following .” i had no idea that by the dot you meant the whole search.

                              Now everything is clear and i even have a greater understanding on some of the things, i read on the notepad++ wiki.
                              Thanks!

                              BS

                              1 Reply Last reply Reply Quote 1
                              • G
                                guy038
                                last edited by guy038 Jan 26, 2022, 8:45 AM Jan 25, 2022, 11:37 AM

                                @alan-kilborn,

                                You said :

                                You haven’t been very active lately.

                                You’re quite right ! Well, there’s a simple explanation to this :

                                • First of all, at this time of the year, I am rather involved in ski, which is a passion of mine !

                                • Secondly, each Wednesday, with eight other people, we supervise , at the Chamrousse station,( the nearest from Grenoble ) 50 children about, from 5 to 14 years old, in ski lessons, for any level, from Débutants to Flèche de Bronze ( approximatively, from american ski level 1 to 8 : refer, for instance, https://www.tripsavvy.com/skiing-ability-levels-3007976 )

                                • And thirdly, last week-end, we were 13 people at Courchevel, a very well-known French station, with a wonderful sunny and blue weather ! Really, we had lunch, Sunday midday, on the terrace of the hotel and it was rather hot, at about 1700 m !


                                Next Thursday, we’ll be, for the day, at the Karellis station :

                                336bbaaa-1d48-4162-8c0e-e1c9d44c7ba0-Capture d’écran 2022-01-25 122601.png

                                Best regards,

                                guy038

                                A 1 Reply Last reply Feb 3, 2022, 3:39 PM Reply Quote 3
                                • A
                                  Alan Kilborn @guy038
                                  last edited by Feb 3, 2022, 3:39 PM

                                  @guy038 said in How to replace a specific text in lines that contains a specific word.:

                                  First of all, at this time of the year, I am rather involved in ski, which is a passion of mine !

                                  I’m not an excellent skier, but nothing sounds better to me right now than joining you on those slopes! :-)

                                  1 Reply Last reply Reply Quote 1
                                  • M Mayonnaisu referenced this topic on Feb 9, 2023, 12:44 PM
                                  • First post
                                    Last post
                                  The Community of users of the Notepad++ text editor.
                                  Powered by NodeBB | Contributors