Sorry...need to put in context [a-z|A-Z|/|\.|-]
(and I find I mistyped it) in the above character class [a-z|A-Z] => [a-zA-Z] Sorry, Tim On Fri, Dec 18, 2009 at 5:56 AM, Ken Egozi <[email protected]> wrote: > [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]<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]. For more options, visit this group at http://groups.google.com/group/castle-project-devel?hl=en.
