Forum Discussion
Nik
Jan 06, 2011Cirrus
stream find/replace expression with an exclude
hey guys i'm stumped with a find/replace situation. let's say i have these three strings:
"this is a string"
"i am a string"
"this is not a string"
now.. i want to replace "a string" with "a banana" however i do not want to replace "this is not a string"
what i'm doing now is this:
STREAM::expression {@a string@a banana@}
STREAM::enable
however this replaces the string i don't want. is there any way to exclude something from the expression?
- hooleylistCirrostratusHi Nik,
From http://devcentral.f5.com/wiki/default.aspx/iRules/stream__expression when HTTP_REQUEST { Disable the stream filter for all requests STREAM::disable } when HTTP_RESPONSE { Check if response type is text if {[HTTP::header value Content-Type] contains "text"}{ Match an http://*example.com string and replace it with nothing yet STREAM::expression {&http://.*?example\.com&&} Enable the stream filter for this response only STREAM::enable } } when STREAM_MATCHED { Check if the matched string meets some condition if {[STREAM::match] starts_with "host1"}{ Replace http:// with https:// and do the replacement STREAM::replace "[string map {http:// https://} [STREAM::match]]" log local0. "[IP::client_addr]:[TCP::local_port]: matched: [STREAM::match], replaced with: [string map {http:// https://} [STREAM::match]]" } }
- NikCirrusthe problem is i'm breaking internet explorer compatibility with a find/replace that i'm doing. here's a more specific example. again, three different strings:
- hooleylistCirrostratusYour post got munged. Can you edit it/reply again with the strings in [ code ] [ code ] blocks?
- NikCirrusthe problem is i'm breaking internet explorer compatibility with a find/replace that i'm doing. here's a more specific example. again, three different strings:
STREAM::expression {@http://forexforums.dailyfx.com/@/@}
- hooleylistCirrostratusThe examples were still stripped from your post. Can you add them as an attachment?
- NikCirrusattached
- hooleylistCirrostratustesting...
the problem is i'm breaking internet explorer compatibility with a find/replace that i'm doing. here's a more specific example. again, three different strings: now, if i do something like this, it replaces all three domain names with "/" however i only want to replace the second two, not the first since it breaks compatibility with internet explorer: STREAM::expression {@http://forexforums.dailyfx.com/@/@} using stream_matched might do the job, i was hoping there'd be something a little simpler though. thanks.
- hooleylistCirrostratus...
- hooleylistCirrostratusI think this might work, if you only want to rewrite a href's:
when HTTP_REQUEST { Disable the stream filter for all requests STREAM::disable } when HTTP_RESPONSE { Check if response type is text if {[HTTP::header value Content-Type] contains "text"}{ Match a tags for http://www.domain.com/ STREAM::expression {@
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects