How To Use Regex Replace To Conditionally Remove Blocks Of Text
May 5, 2010
I would like to conditionally remove a block of text between specifed start and stop delimiters. The code below does not work, but hopefully it suggests enough of what I am trying to accomplish.
string pattern = "<(.| )+?>"; System.Text.RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Reg(pattern); string result = ""; result = regEx.Replace(htmlText, "");
In this "htmlText" will have some html code which also contains break tags. Right now its replacing all the html tags, but I want to leave break tag and replace the rest.
I need to replace <span> entries in a string to legacy html code because it's going to be used in a report for Crystal Reports. <b> works with Crystal, but the<span>'s do not.
Here's the string which I'm trying to replace: <span style="font-weight: bold">%THIS CAN BE ANY TEXT%</span>. I want to replace it to
I need a regex or any other solution to replace an id in the middle of a url (not in querystring). url example - http://localhost:1876/category/6?sortBy=asc&orderBy=Popular
replace - category/6 with category/anotherID - routing used - routes.MapRoute( "categories", "category/{categoryID}/{categoryName}", new { controller = "Search", action = "SearchResults", categoryID = "", categoryName = "" } );
with a regex that would replace the following. The only thing that would remain the same is the div tags, the id's and classes could change and so could the content.
<div id="nav" class="whatever">Content is whatever</div>
The code works, but I need to include some exceptions to the replace - e.g. I will not replace anything i an img-, li- and a-tag (including link-text and attributes like href and title) but still allow replacements in p-, td- and div-tags.
How do I solve the problem below? I'm creating a simple content management system, where there is a HTML template with specific markup that denotes where content should be:
Separate from this, there is content in a database field that looks a little like this:
<!-- #BeginEditable "Body1" -->This is Test Text<!-- #EndEditable --><!-- #BeginEditable "Extra" -->This is more test text<!-- #EndEditable -->
As you can guess I need to merge the two, that is, replacing
<!-- #Editable "Body1" -->
with: This is Test Text. I've begun the code here. But I'm having problems using the Regex Replace function that should be located at the very bottom of that For/Each.
//Html Template string html = "<html><head></head><body><!-- #Editable "Body1" --><p>etc etc</p><!-- #Editable "Extra" --></body></html>"; //Regions that need to be put in the Html Template string regions = "<!-- #BeginEditable "Body1" -->This is Test Text<!-- #EndEditable --><!-- #BeginEditable "Extra" -->This is more test #EndEditable -->"; //Create a Regex to only extract what's between the 'Body' tag Regex oRegex = new Regex("<body.*?>(.*?)</body>", RegexOptions.Multiline); //Get only the 'Body' of the html template string body = oRegex.Match(html).Groups[1].Value.ToString(); // Regex to find sections inside the 'Body' that need replacing with what's in the string 'regions' Regex oRegex1 = new Regex("<!-- #Editable "(.*?)"[^>]*>",RegexOptions.Multiline); MatchCollection matches = oRegex1.Matches(body); // Locate section titles i.e. Body1, Extra foreach (Match match in matches) { string title = oRegex1.Match(match.ToString()).Groups[1].ToString(); Regex oRegex2 = new Regex("<!-- #BeginEditable "" + title + ""[^>]*>(.*?)<!-- #EndEditable [^>]*>", RegexOptions.Multiline); // // // Replace the 'Body' sections with whats in the 'regions' string cross referencing the titles i.e. Body1, Extra // // // }
so that the resulting output does not contain words at the centre.In the above code instead of giving the word vocation exclusively, i have to mention some pattern, so that it will replace all the words instead of doing it for first sentence only.How to modify my code?
I have a textbox where I accept multiple email ids separated by a comma. I then split it in my code-behind. If an email id is invalid, I change the background of it using Regex.replace, like this:
I want to change the way my blogs are displayed on my website. I currently use a seperate table in SQL to hold them and do a loop and replace.
All I really need to do is have a code that can be translated into real HTML in the blog code. I need to know the image name and the css class.
I was thinking is it possible to have somthing like this in a blog stored in the DB
<img L 1234.jpg> and use regex to match it and change it ton<img src="1234.jpg class="imgleft">
I know it looks like well why not just use the long code and not use regex, but I have a method that gets in the image path from the image name with padding. So in this case the image path would be 000/000/001/234/1234.jpg
I would have more then one occurance in the original string so would need to either somehow replace them all at once or use the regex to loop through untle they have all be matched
is something like this possible or do I need a different approach
I'm trying to replace some code generated by the AJAX Control Toolkit HTMLEditor from the XHTML standard to legacy code; <span style=*> to <b>, <u>, <i>, etc. This needs to be done because Crystal Reports doesn't understand the <span style=*> and needs the legacy items.
This is the code being generated by the HTMLEditor:
[Code]....
Is Regex.Replace the best way to replace these items? I need to keep the text between the opening and closing statements as well as ensure the proper formatting to the text so doing just ReplacementText.Replace will not work. I've tried a number of different things to try and get Regex.Replace working properly but keep having different issues and different things happen. But why it's not using the the closing span for the bold statement but using the closing span for the italics is beyond me.
i'm trying to find all the anchor tags and appending the href value with a variable. for example
<a href="/page.aspx">link</a> will become <a href="/page.aspx?id=2"> <A hRef='http://www.google.com'><img src='pic.jpg'></a> will become <A hRef='http://www.google.com?id=2'><img src='pic.jpg'></a>
I'm able to match all the anchor tags and href values using regex, then i manually replace the values using string.replace, however i dont think its the efficient way to do this.Is there a solution where i can use something like regex.replace(html,newurlvalue)
I have a web application (done in ASP/C#) that has regex validation on a text box. Initially the regex works perfectly fine. But then I also provide a button click event (clear) that allows the user the clear text box and change their input for a new query. At this point (page post back) the regex takes control and maintains control of the text box so a new query can't be run. Can anyone tell me what to do so that the regex doesn't fire on page postback and allows new input for validation?
I have a long string containing the ,<p> </p> and <br>. I want to clean my string from all these tags and spaces. How it can be done with String.Replace() method. I am doing separately right now, it is working but is there a way to do it at once, without replace() method.
I am working with a few .Net 4.0 webforms controls such as the Menu control and while I think it's great that I can now declare the way in which controls are rendered (i.e. as either tables or divs), I can't switch off the automagically-included javascript that manages the hover events for those controls, for example:new Sys.WebForms.Menu({ element: 'NavigationMenu', disappearAfter: 500, orientation: 'horizontal', tabIndex: 0, disabled: false }This appears at the bottom of every page that owns such a control.
How to use pattern replacement in the RTF?. For example you can add a placeholder like {USER_FIRST_NAME} in the RTF document. When the user clicks the download button, your application can take the information from the database and replace every instance of {USER_FIRST_NAME} with the data from the database....
I'm modifying an existing application. I need to be able to bind the Text property of an asp:DropDownList control to one of two fields when the page is rendered. The existing code is like this:
[Code]....
I've tried to use conditional logic on the .aspx page when setting the Text property, but everything I've tried results in an error. I've also tried using code-behind to set the Tetxt property in the Page_Load event. This doesn't generate an error, but it doesn't set the property either.