|
[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message] XQuery - RegEx Pattern Matcherderstubbi at gmx.de derstubbi at gmx.deFri Jun 19 13:29:18 PDT 2009
I am trying to "read" CSV data like this : one;"two;stilltwo";three;"four;stillfour";five this should resolve in something like this : ... <element>one</element> <element>two;stilltwo</element> <element>three</element> <element>four;stillfour</element> <element>five</element> ... if there is no separator(";") allowed within a text it is easy with just splitting a line with ";". But if there can be a ";" as a text, than I have to use RegEx. I succeded in finding a XQuery-RegEx if in one line there is only one case where a ";" is used as text. But I need to find every match, so I used the \\G . Worked fine, so I hoped to reuse it in XQuery... -------- Original-Nachricht -------- > Datum: Fri, 19 Jun 2009 10:20:30 +0100 > Von: "Michael Kay" <http://x-query.com/mailman/listinfo/talk> > An: http://x-query.com/mailman/listinfo/talk, http://x-query.com/mailman/listinfo/talk > Betreff: RE: XQuery - RegEx Pattern Matcher > > The XPath regular expression language does not recognize \G and it does > not > recognize non-capturing groups. > > As far as matches() is concerned, there is no distinction between > capturing > and non-capturing groups, so replace "(?:" by "(". > > I suspect you wanted your regex to contain "\G". In Java you need to > escape > this as "\\G"; in XPath/XQuery, backslash is not a special character and > does not need to be escaped. However, there's no "\G" in XPath regular > expressions anyway. In Java it means "the end of the previous match"; but > XQuery is a functional language, so "previous" is meaningless. At this > stage > I give up because I'm not sure what you are trying to do: you haven't > supplied enough of your code. > > Regards, > > Michael Kay > http://www.saxonica.com/ > http://twitter.com/michaelhkay > > > -----Original Message----- > > From: http://x-query.com/mailman/listinfo/talk > > [mailto:http://x-query.com/mailman/listinfo/talk] On Behalf Of http://x-query.com/mailman/listinfo/talk > > Sent: 19 June 2009 09:33 > > To: http://x-query.com/mailman/listinfo/talk > > Subject: XQuery - RegEx Pattern Matcher > > > > Hi, > > I am trying to use a RegEx within XQuery. In general that works fine. > > Now I have a more complex RegEx to work with CSV-files(these > > CSV have ";" as separator). > > I use can the following without problems in Java : > > > > Pattern Regex = Pattern.compile( > > "\\G(?:^|;)(?:\"((?:[^\"]|\"\")*)\"|([^\";]*))"); > > ... > > > > But in XQuery > > let $regularExpr :='\\G(?:^|;)(?:\"((?:[^\"]|\"\")*)\"|([^\";]*))' > > ... > > if (matches($row,$regularExpr) ) then ( ... > > > > just gives the error : > > > > Error at character 4 in regular expression > > "\\G(?:^|;)(?:\"((?:[^\"]|\"\")...": expected ()) > > > > > > I tried the optional flags (i, x, ...) but always with the > > same result... > > What is wrong with this RegEx ? > > > > P.S. :I run the XQuery from Java with Saxon. > > > > > > -- > > GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate und > > Telefonanschluss für nur 17,95 Euro/mtl.!* > > http://portal.gmx.net/de/go/dsl02 > > _______________________________________________ > > http://x-query.com/mailman/listinfo/talk > > http://x-query.com/mailman/listinfo/talk > > > _______________________________________________ > http://x-query.com/mailman/listinfo/talk > http://x-query.com/mailman/listinfo/talk -- GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate und Telefonanschluss für nur 17,95 Euro/mtl.!* http://portal.gmx.net/de/go/dsl02
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|






