[a-z][A-Z] => [a-zA-Z] you sure? the first will match two letters, first is locase, second is capital while the second will match a single letter, either locase or capital.
On Fri, Dec 18, 2009 at 8:40 AM, Tim Barcz <[email protected]> wrote: > What about data scheme? > > > On Thu, Dec 17, 2009 at 11:52 PM, Bill Barry <[email protected]>wrote: > >> I would use one of the following (altering them some to use in .net >> strings of course): >> >> ^.*?url\(\s*(?<quote>["']?)(?<Url>(?!https?:|/)[^"')]+?)\k<quote>\s*\).*?$ >> >> options: ignorecase, multiline >> >> or >> >> url\(\s*(?<quote>["']?)(?<Url>(?!https?:|/)[^"')]+?)\k<quote>\s*\) >> >> options: ignorecase >> depending on whether you want the whole line or not; the second is >> probably better because you technically can have more than one url on a >> line: >> UL { background-image: url(shadow-c.png); list-style-image: >> url(bullet.png); } /* perfectly valid css rule, under the first case you >> would capture only one of the urls, but the second you could see both */ >> >> These regexes may still be missing some valid urls and capturing some >> invalid ones because I am pretty sure there is some sophisticated escaping >> rules in play for such urls which I am outright ignoring.. >> >> testcases (including ones that fail previous posted regexes): >> background-image: url(images/default/shadow-c.png); /*valid*/ >> background-image: url(shadow-c.png); /*valid*/ >> background-image: url(../images/default/shadow-c.png); /*valid*/ >> background-image: url('../images/icons/file-xslx.gif') !important; >> /*valid*/ >> background-image: url("../images/icons/file-xslx.gif") !important; >> /*valid*/ >> background-image: url('http-header.gif') !important; /*valid*/ >> background-image: url('http_header.gif') !important; /*valid*/ >> background-image: url( 'http_header.gif') !important; /*valid*/ >> background-image: url( 'http_header.gif' ) !important; /*valid*/ >> background-image: url ( 'http_header.gif' ) !important; /*space between >> url and ( not valid [at least according to firefox 3.5]*/ >> background-image: url('../images/icons/file-xslx.gif") !important; >> /*non-matching quotes*/ >> background-image: url(../images/icons/file-xslx.gif") !important; >> /*missing start quote, might still be valid depending on char escaping rules >> to look for the file 'file-xlsx.gif"'*/ >> background-image: url("../images/icons/file-xslx.gif) !important; >> /*missing end quote*/ >> background-image: url(/images/icons/file-xslx.gif) !important; /*absolute >> url*/ >> background-image: url('/images/icons/file-xslx.gif') !important; >> /*absolute url*/ >> background-image: url("/images/icons/file-xslx.gif") !important; >> /*absolute url*/ >> background-image: url('http://example.com/images/icons/file-xslx.gif') >> !important; /*absolute url*/ >> background-image: url(http://example.com/images/icons/file-xslx.gif) >> !important; /*absolute url*/ >> >> >> Additional testcases I didn't bother with: >> >> background-image: url( \(.gif ) !important; /*valid, filename = (.gif */ >> background-image: url( \).gif ) !important; /*valid, filename = ).gif */ >> background-image: url( \'.gif ) !important; /*valid, filename = '.gif */ >> background-image: url( \".gif ) !important; /*valid, filename = ".gif */ >> background-image: url( \ .gif ) !important; /*valid, filename = " .gif" */ >> background-image: url( \ >> .gif ) !important; /*valid (newline is part of the filename) only when >> served with unix line endings (filename would be invalid in windows line >> endings because not both \r and \n are escaped here)*/ >> background-image: url( >> a.gif ) !important; /*valid (newline is not part of the filename)*/ >> background-image: url( '\(.gif' ) !important; /*valid, filename = \(.gif >> */ >> background-image: url( '\).gif' ) !important; /*valid, filename = \).gif >> */ >> background-image: url( '\'.gif' ) !important; /*valid, filename = \'.gif >> */ >> background-image: url( '\".gif' ) !important; /*valid, filename = \".gif >> */ >> background-image: url( '\ .gif' ) !important; /*valid, filename = "\ >> .gif"*/ >> background-image: url( '\ >> .gif' ) !important; /*valid (newline and \ are part of the filename, >> filename would be \\\n.gif if served with unix line endings, \\\r\n.gif with >> windows line endings)*/ >> >> >> These are valid css rules, assuming that the filename is a valid URI >> according to http://www.ietf.org/rfc/rfc3986 after css has taken care of >> the escape chars. Developing a correct regex for rfc 3986 is a job suited >> only for a regex engine like that of Perl 6 (it is a non-deterministic >> context-sensitive grammar which makes it unsuited for any regex language >> that has comparable capabilities to Perl 5). >> >> >> James Curran wrote: >> >> Oops.. Sorry, insufficent test cases... >> >> These should match as well. >> >> background-image: url(images/default/shadow-c.png); >> background-image: url(shadow-c.png); >> >> Also, the url itself needs to be placed into a named capture called "Url". >> >> Also, as a style note, in your patterns, you've written >> "[a-z|A-Z|/|\.|-]". Inside the group brackets, the "or" is assumed. >> That should be [a-zA-Z/\.-]. As you wrote it, it would match a >> literal verticle pipe character, which would be wrong. >> >> On Thu, Dec 17, 2009 at 2:45 PM, Leonardo Lima<[email protected]> >> <[email protected]> wrote: >> >> >> Hi, >> >> Here I tested at Regex Buddy and worked only for the 3 first entries, sorry >> I think that I don´t understand your question... >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Castle Project Development List" group. >> >> To post to this group, send email to >> [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<castle-project-devel%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/castle-project-devel?hl=en. >> > > > > -- > Tim Barcz > Microsoft C# MVP > Microsoft ASPInsider > http://timbarcz.devlicio.us > http://www.twitter.com/timbarcz > > -- > You received this message because you are subscribed to the Google Groups > "Castle Project Development List" group. > > To post to this group, send email to [email protected] > . > To unsubscribe from this group, send email to > [email protected]<castle-project-devel%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/castle-project-devel?hl=en. > -- Ken Egozi. http://www.kenegozi.com/blog http://www.delver.com http://www.musicglue.com http://www.castleproject.org http://www.idcc.co.il - הכנס הקהילתי הראשון למפתחי דוטנט - בואו בהמוניכם -- You received this message because you are subscribed to the Google Groups "Castle Project Development List" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/castle-project-devel?hl=en.
