Community
    • Login

    Search and Replace Question - Need help fixing a file

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    3 Posts 2 Posters 140 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.
    • Almighty1A
      Almighty1
      last edited by

      Fellow Notepad++ Users,

      Could you please help me the the following search-and-replace problem I am having?

      I have a .xml file and basically I want to get the <setting> in the right place.

      Here is the data I currently have (“before” data):

      <settings><setting name="ReleaseChannel">2</setting><setting
      name="AllowOnlyOneInstance">1</setting><setting name="CloseOnEscape">0</setting><setting
      name="DbgHelpSearchPath">SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols</setting><setting
      name="DbgHelpUndecorate">1</setting><setting name="DisabledPlugins"></setting><setting
      name="ElevationLevel">1</setting><setting name="EnableAdvancedOptions">1</setting><setting
      name="EnableAvxSupport">0</setting><setting name="EnableBitmapSupport">1</setting><setting
      name="EnableArmCycleCpuUsage">0</setting></settings>
      

      Here is how I would like that data to look (“after” data):

      <settings>
      <setting name="ReleaseChannel">2</setting>
      <setting name="AllowOnlyOneInstance">1</setting>
      <setting name="CloseOnEscape">0</setting>
      <setting name="DbgHelpSearchPath">SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols</setting>
      <setting name="DbgHelpUndecorate">1</setting>
      <setting name="DisabledPlugins"></setting>
      <setting name="ElevationLevel">1</setting>
      <setting name="EnableAdvancedOptions">1</setting>
      <setting name="EnableAvxSupport">0</setting>
      <setting name="EnableBitmapSupport">1</setting>
      <setting name="EnableArmCycleCpuUsage">0</setting>
      </settings>
      

      IF THERE IS SOMETHING THAT DOES NOT GET EXPRESSED WELL
      BY PASTING YOUR EXAMPLE TEXT BETWEEN THE ``` LINES ABOVE,
      PLEASE MAKE A SCREENSHOT OF YOUR NOTEPAD++ WINDOW AND
      PASTE IT HERE. BUT A PICTURE SHOULD ONLY ACCOMPANY
      YOUR EXAMPLE TEXT, YOU SHOULDN’T USE THE PICTURE IN
      PLACE OF YOUR EXAMPLE TEXT.

      To accomplish this, I have tried using the following Find/Replace expressions and settings

      • Find What = SEARCH EXPRESSION HERE
      • Replace With = REPLACEMENT EXPRESSION HERE
      • Search Mode = REGULAR EXPRESSION or NORMAL or EXTENDED
      • Dot Matches Newline = CHECKED or NOT CHECKED

      HERE IS WHY YOU THOUGHT YOUR EXPRESSION WOULD WORK

      Unfortunately, this did not produce the output I desired, and I’m not sure why. Could you please help me understand what went wrong and help me find the solution?

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

        @Almighty1 ,

        Thanks for using the search/replace template (though you didn’t need to leave the “IF THERE IS SOMETHING…” text; sorry that wasn’t more obvious … and actually showing what you tried, rather than leaving the default prompts, would have been good)

        This isn’t hard with regular expressions (regex) and learning a few of the simple special-sequences in regex (each of which I briefly explain below):

        • Search > Replace
        • Find What: ><setting\s+
          • \s+ says look for one or more space, tab, or newline characters, thus allowing you to capture the line-wrap that appears in your example data
        • Replace With: >\r\n<setting\x20
          • \r\n says “put a newline in the replacement”
          • the \x20 at the end is just an alternate encoding for the space character, which I used because it’s easier to notice during copy/paste from the forum than if I’d said “there’s a space at the end of the replacement regex, which you cannot easily copy”
            • by replacing the space(s)/newlines from the FIND with a single space character, it will merge the <setting back to the same line as the name="...
        • Search Mode: Regular Expression
        • Replace All

        ----

        Useful References

        • Notepad++ Online User Manual: Searching/Regex
        • FAQ: Where to find other regular expressions (regex) documentation
        Almighty1A 1 Reply Last reply Reply Quote 3
        • Almighty1A
          Almighty1 @PeterJones
          last edited by

          @PeterJones - Thanks for the assistance!

          You are right, some of the parts are obvious but I didn’t want to mess up the template by deleting things that don’t apply in case it is needed to produce the correct output in the post itself. Same reason, I didn’t delete the “To accomplish this,” section because while I knew from searching that \r\n meant carriage return, in the before data, I wasn’t sure what to use because as you can see, I knew one had to look for "<setting " but then I looked at it and noticed that there are two versions of "<setting ", one being "<setting " with the second one being “<setting name=”, and obviously, nothing needed to be done for “<setting name=” so my thought was I thought, I needed to make it ignore the “<setting name=” lines as part of the find which was really what made it more difficult in the search part.

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