Community
    • Login

    Find and Replace specific character in a specific string

    Scheduled Pinned Locked Moved General Discussion
    replacefindregex
    7 Posts 2 Posters 12.9k Views 2 Watching
    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.
    • Saeed Ghazi JoolaeeS Offline
      Saeed Ghazi Joolaee
      last edited by

      Hi,
      I have a text:


      way 150841940
      highway = residential
      name = ‘Smith 120’
      name:fr = ‘Simon 120’
      nd 1637110349
      nd 1637110360


      Then I want to replace any digit in lines which have "name = " in it with another character, and I don’t want any digit in other places be replaced.

      for example, I want replace 1 with X then :
      name = ‘Smith 120’ --------> name = ‘Smith X20’
      but name:fr = ‘Simon 120’ --------> no change
      and nd 1637110349-------->no change

      Claudia FrankC 1 Reply Last reply Reply Quote 0
      • Claudia FrankC Offline
        Claudia Frank @Saeed Ghazi Joolaee
        last edited by

        Hello Saeed-Ghazi-Joolaee,

        from the provided example I assume that Smith 120 is surrounded by a single quote.

        Open replace dialog and check regular expression in search mode.
        The regex which needs to be used is

         (.*name = ')(.* )(\d+)(')
        

        which should result in 4 groups

        \1: name = '
        \2: Smith 
        \3: 120
        \4: '
        

        what means the replace dialog needs to be used like

        Find what    :(.*name = ')(.* )(\d+)(')
        Replace with :\1\2xxx\4
        

        which would then result in

        way 150841940
        highway = residential
        name = 'Smith xxx'
        name:fr = 'Simon 120'
        nd 1637110349
        nd 1637110360
        

        Cheers
        Claudia

        1 Reply Last reply Reply Quote 0
        • Saeed Ghazi JoolaeeS Offline
          Saeed Ghazi Joolaee
          last edited by

          Thanks Claudia,

          But I mean something else. I have numerouse sequence of this text block with different “names” which have different numbers in them. I want to replace “1” in all names with “X”, '2" with “Y”, and “3” with “Z” …9

          way 35103881
          name = ‘4/2’
          nd 411824630
          nd 717069654

          way 152126825
          name = ‘2nd Street’
          nd 1649547187
          nd 1649547183
          nd 1649547177

          way 191544328
          name = ‘Joe 618’
          nd 2021290076
          nd 2021290075
          nd 2021290074
          nd 2021290073

          way 191544409
          name = ‘John 13’
          nd 2021290720
          nd 2021290719

          (Excuse me for long Example)

          How can I replace one by one digit with my desired letters in “name” lines. Maybe with help of Marked lines this could be done, isn’t it?

          Claudia FrankC 1 Reply Last reply Reply Quote 0
          • Claudia FrankC Offline
            Claudia Frank @Saeed Ghazi Joolaee
            last edited by Claudia Frank

            Hello Saeed-Ghazi-Joolaee

            still having problems to understand the logic which needs to be used.
            I understand only the line with name = is of interested.
            Can we safely assume that the value which needs to be changed is surrounded by single quotes?
            Is the first digit,which needs to be replaced, strictly mapped to a letter ?
            The provided example

            name = ‘4/2’ needs to be changed to something like name=‘Y/2’
            and
            name = ‘Joe 618’ to something like name = ‘Joe R18’

            Correct?

            Cheers
            Claudia

            1 Reply Last reply Reply Quote 0
            • Saeed Ghazi JoolaeeS Offline
              Saeed Ghazi Joolaee
              last edited by

              Hello Claudia,

              Thanks for your contribution,
              Exactly, I want to replace Latin numbers with Persian numbers. For your convenience, I used here Latin letters.

              I must do it digit by digit, because I don’t know which numbers is used in my text (I can’t do it from 0 to 9999999999…, Thus, It’s better done digit by digit from 0 to 9). And I want only to replace numbers in name = lines not other numbers - which must be in English intact.

              @ Can we safely assume that the value which needs to be changed is surrounded by single quotes?
              quotes are not important at all.

              @ name = ‘Joe 618’ to something like name = ‘Joe R18’
              Correct?

              Exactly. Finally after replacing all 9 digits I want name = ‘Joe RAV’

              Thanks in advance.

              Claudia FrankC 1 Reply Last reply Reply Quote 0
              • Claudia FrankC Offline
                Claudia Frank @Saeed Ghazi Joolaee
                last edited by

                Hello @Saeed-Ghazi-Joolaee

                quotes are not important at all.
                they are important as I use a regualr expression based on the existance of the single quotes.

                You need to run the regex 10 times, for each digit one run.
                You build 4 groups ( ), where as group 3 is the number you are looking for
                Something like

                (.*name = ')(.*)(8)(.*')
                

                and replace with

                \1\2V\4
                

                The letter which is used as replacement is between group \2 and \4 without spaces.

                I hope this does what you are looking for.

                Cheers
                Claudia

                1 Reply Last reply Reply Quote 1
                • Saeed Ghazi JoolaeeS Offline
                  Saeed Ghazi Joolaee
                  last edited by

                  Hi Claudia,

                  Thanks for your kind help. I almost reached my destination. The only thing is that for numbers which have equal digits like 33 or 333 I must search two or three times to complete my replacement. As far as my numbers are maximum 3 digit numbers, this in no matter.

                  Cheers.

                  1 Reply Last reply Reply Quote 0

                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                  With your input, this post could be even better 💗

                  Register Login
                  • First post
                    Last post
                  The Community of users of the Notepad++ text editor.
                  Powered by NodeBB | Contributors