Disclaimer

Any opinions expressed here are my own and not necessarily those of my employer (I'm self-employed).

Feb 20, 2012

Multiline search and replace in Visual Studio

Today I had to add a new HttpModule to A LOT of web.configs. Adding it manually would be too tedious, so I had to figure out how to search for a single line in Visual Studio 2010 and replace it with two lines of text. If I could only find a way to search for some text, and replace it with several lines of text!

Google turned up some hints about the Regex search, but no apparent solutions. After playing around a bit with the regex search in Visual studio, I found that it supports multiline text in both the search and replace strings.

When you're using "Find and Replace" in Visual Studio you can enable Regular Expressions, under "Find options", as shown in the screenshot. The regular expressions let you represent newlines in the search or replace fields, by using a \n. Cool! I've included an example below the image.

But beware, when you enable regular expressions you need to escape special characters, in my case < and >,  with a backslash. Your "Find" statement will be interpreted as a regular expression. Check out the MSDN page on regular expressions in Visual Studio to learn more about which characters are special and which are not.

Update Sep. 2012: This post deals with Visual Studio 2010. Regular expressions have changed in VS 2012, as you'll see from the link above. See the comments on this post for a new example of multiline search and replace for both VS 2010 and VS 2012.


In my case, I wanted to add a new module directly after the WIF SessionAuthenticationModule. I've shortened the config lines, for space and readability. To match the config line I had to escape < and > which have special meaning in a regex.

\<add name="SessionAuthenticationModule" ... PublicKeyToken=31bf3856ad364e35" /\>

And you want to replace it with itself, followed by a new line of config (the \N represents the newline):

<add name="SessionAuthenticationModule"... />\n <add name="BrandNewModule" ... />

This neatly replaced the line of config with the two lines of config I was hoping for:

<add name="SessionAuthenticationModule"... PublicKeyToken=31bf3856ad364e35" />
<add name="BrandNewModule" ... />

Easy huh?

***Update***
Mr. F pointed out a better solution in his comment on this post — tagging expressions. Just now, I had to add a new appsetting to a lot of web.configs so I had to give it a try! In the "Find what:"

{\</appSettings\>}

and in the "Replace with:"

<add key="newsetting" value="somevalue"/>\n  \1

Even cooler! Thanks F! (We both know who you are..)

41 comments:

  1. Why not use tagged expressions by adding some curly braces to your search string:
    {\<add name="SessionAuthenticationModule" ... PublicKeyToken=31bf3856ad364e35" /\>}

    and in replace, use this:
    \1\n <add name="BrandNewModule" ... />


    -F

    ReplyDelete
    Replies
    1. Excellent point. If I had read my own reference thoroughly I would've learned this :) The post has been duly updated.

      Delete
  2. This isn't multi-line search though is it? You're replacing with a newline character yes but you're not finding text which spans more than one line. For example, if I want to find:

    one
    two
    three

    and replace it with:

    four
    five
    six

    This can't be done, because VS won't be able to match the first three lines together. Even searching for "one.*two" yields no results which means VS is incapable of seeing beyond one line at a time.

    I appreciate the information provided in this post but its title is misleading, and as a result it comes up when searching for a way to perform multi-line find and replace in VS.

    ReplyDelete
    Replies
    1. Hi,

      thank you for leaving a comment. You're right, I did not include an example for matching text that spans more than one line. It can still be done! The easiest way to match your example in VS 2010 would be this:

      Find: one\ntwo\nthree
      Replace: four\nfive\nsix

      For a more advanced example, where there's whitespace characters before and after each word on the line (think indentation) this would preserve whitespace characters in VS 2010:

      Find: one{[:b\n]*}two{[:b\n]*}three
      Replace: four\1five\2six

      Turns out they changed the regular expressions in VS 2012, so I'll update my post.

      To do the same whitespace preserving multiline search with a multiline replace in VS2012:

      Find: one([\s\n]*)two([\s\n]*)three
      Replace: four$1five$2six

      So, it's possible. Hope this helps.

      Delete
  3. It's also very possible by just opening an editor like dreamweaver and using their multi-line find and replace. Kind of a real pain to go from VS to another application just to get functionality that should be built into VS. The fact that people still have to use hacks to do something that has been included in most other editors for years is amazing.

    ReplyDelete
  4. Thank you very much! :)

    Daniel

    ReplyDelete
  5. Here is VS extension tool for Multiline Search and Replace: https://visualstudiogallery.msdn.microsoft.com/699ce302-b0d4-4083-be0e-1682e873cebf

    ReplyDelete
  6. Wow what a Great Information about World Day its very nice informative post. thanks for the post. Search Bar Firefox 57 Quantum addon

    ReplyDelete
  7. Thank you for the presentation of what is interesting as a variety of comments that are very interesting.


    svetus

    ReplyDelete
  8. Download APlikasi ayam bangkok blitar Di Playstore ataupun App Store kesayangan anda BOLAVITA Sabung Ayam

    ReplyDelete
  9. Web Ocean Design is the best IT services provider for complete mobile and web application development. The young development company based in Bihar, India, owned and managed by Vicky who have a good amount of experience in Information Technology, Management and other related fields. We provide technical and creative services ranging from Internet Marketing to Communication maneuver. We are also skilled in website development which includes brand promotion, web designing and software development.

    website design company in patna
    website development company in patna
    website development in patna

    web design company in patna
    web development company in patna
    website design in patna

    website design patna
    seo company in patna
    seo company in bihar

    ReplyDelete
  10. Web Ocean Design is the best IT services provider for complete mobile and web application development. The young development company based in Bihar, India, owned and managed by Vicky who have a good amount of experience in Information Technology, Management and other related fields. We provide technical and creative services ranging from Internet Marketing to Communication maneuver. We are also skilled in website development which includes brand promotion, web designing and software development.

    best seo company in patna
    digital marketing company in patna
    best website design company in patna

    affordable seo service in patna
    website optimization in patna
    educational internet marketing company patna

    social media marketing company patna
    real estate seo company in patna
    ecommerce seo company patna

    ReplyDelete
  11. โปรโมชั่นใหม่ “แจกโบนัส สูงสุดทันที 1,000 บาท”
    gclub online โปรโมชั่น แบบครบวงจรที่คอยอัพเดทข่าวสารเกี่ยวกับโปรโมชั่น จีคลับ บาคาร่าออนไลน์ สล็อตออนไลน์ ตลอดทั้ง 24 ชั่วโมง เพื่อให้ท่านได้สามารถเข้าร่วมสนุกไปกับเกมออนไลน์ของเราได้ตลอดเวลาโปรโมชั่นสำหรับสมาชิก Premium, VIP ที่แจกโบนัสให้สูงที่สุด 10% และโปรโมชั่นแบบรายวัน สำหรับคำขอบคุณที่มอบให้กับ โปรโมชั่น gclub

    ReplyDelete
  12. Thank you! I hope to hear more updates from you, this is very helpful.
    name generator

    ReplyDelete
  13. All of our custom term paper writing service will always be 100% unique and authentic work composed by an essayist on our writing team as plagiarism is a crucial area when it comes to seeking custom dissertation writing services in our firm.

    ReplyDelete
  14. We are one of the best custom writing companies as we submit our papers on time and students will have a satisfactory time to go over the essay trying to counter check for any mistake or error which might need urgent correction. Order a custom assignment help and get the best results.

    ReplyDelete
  15. Every agency and consultant has their own SEO methodology; therefore they may use different methods to achieve high organic rankings for websites.seo-ranking

    ReplyDelete
  16. Are you struggling with identifying an online Annotated Bibliography Services provider which is credible to undertake your task? Do not let tedious Custom Research Paper Services tasks sap you of energy unnecessarily, online Custom Research Paper Writing Service delivery comes with its own set of challenges.

    ReplyDelete

Copyright notice

© André N. Klingsheim and www.dotnetnoob.com, 2009-2018. Unauthorized use and/or duplication of this material without express and written permission from this blog’s author and/or owner is strictly prohibited. Excerpts and links may be used, provided that full and clear credit is given to André N. Klingsheim and www.dotnetnoob.com with appropriate and specific direction to the original content.

Read other popular posts