Community

    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    specific find/replace function for numeric wildcard plus specific character?

    Help wanted · · · – – – · · ·
    4
    4
    10268
    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.
    • David Stambler
      David Stambler last edited by

      We have a specific find/replace that I can’t find the solution for. I’ve done a few searches but can’t find what we need, and perhaps Notepad++ has the solution.

      We have a very long 16000 row list of a book index that we are trying to simplify, and in it there are disease names followed by page numbers which have either f or t appended to the number, i.e.

      • granuloma 553 irritant/toxic causes 251t
      • eruption 551Ð552, 552f idiopathic facial
      • pathogenesis 545, 546f
      • 833 adhesion molecules 1684f, 1685t adhesion proteins

      We want to remove all numbers plus the letter t and f. I think we need to find a find/replace for a wildcard number string PLUS the letter t or f.

      The problem we have is that we can do a wildcard string of 3 characters + f but then if a word that has three letters followed by f, it will also be removed, which we don’t want.

      Is there a formula in Notepad++ where we can specify a numeric wildcard string plus a designated character for removal and/or replacement with a space?

      Please advise, and thank you!

      Scott Sumner 1 Reply Last reply Reply Quote 0
      • Scott Sumner
        Scott Sumner @David Stambler last edited by

        @David-Stambler

        The suggestion I will make is to look at regular expression search and replaces. You should think in terms of “regular expressions” rather than “wildcards”.

        Here’s a small example for you, you can remove “three digits plus an f” with the following:

        Find-what zone: \d{3}f
        Replace-with zone: make sure this zone is empty
        Search mode: Regular expression

        But really, I think your data conversion is relatively complex, based upon your sample data, so I encourage you to do some research in order to do the best conversion possible. Good luck.

        1 Reply Last reply Reply Quote 0
        • Meta Chuh
          Meta Chuh last edited by

          @David-Stambler

          open replace menu (ctrl+h)
          search mode: regular expression

          find text: \d{1,5}(f|t)
          replace text:
          (leave empty)
          

          this removes any number with 1, 2, 3, 4 or 5 digits if is directly followed by either f or t

          1 Reply Last reply Reply Quote 0
          • AdrianHHH
            AdrianHHH last edited by AdrianHHH

            This is easy in Notepad++ with a regular expression, but it is also easy to get it wrong and to wrongly delete or change things. So first, make sure you have a backup of the file, not just the backups that Notepad++ will keep, but make your own backup copy. Then it is easy to revert if you mess things up.

            Also note that “wildcards” and “regular expressions” are different. Notepad++ supports regular expressions, it does not do wildcards.

            All the numbers to be altered in the example text have 3 or 4 digits and are preceded by a space and then have the f or t. Then there is another space or a comma or the end of line. These strings can be removed by replacing " \d{3,4}[ft](,| |$)" with a single space. That leaves the text as:

            granuloma 553 irritant/toxic causes
            eruption 551Ð552, idiopathic facial
            pathogenesis 545,
            833 adhesion molecules adhesion proteins

            The question is not clear whether the remaining numbers above, i.e. those without a t or f, should be removed. Assuming they are to be removed then the above regular expression could be altered to be “(^| )\d{3,4}[ft]?(,| |$)”. Using it gives the result

            granuloma irritant/toxic causes
            eruption 551Ð552, idiopathic facial
            pathogenesis
            adhesion molecules adhesion proteins

            This leaves 3 issues that I can see.

            • The “551Ð552” . There should not be many numbers left. They can be searched for and removed manually.
            • Leading and trailing spaces on lines. Use menu => Edit => Blank operations => Trim leading and trailing spaces.
            • Embedded double spaces (came from the two replacements at “1684f, 1685t”. Just do a replace-all of two spaces with one space and repeat until no more changes found.

            Note that using simple regular expressions such as “\d{3,4}[ft]” is unwise for this task. It would change, for example, “ulna 123fibia radius 45678tibia pelvis” to be ulna ibia radius 4ibia pelvis". Thus removing wanted letters and leaving some digits in place.

            1 Reply Last reply Reply Quote 1
            • First post
              Last post
            Copyright © 2014 NodeBB Forums | Contributors