Hi,<br><br>That expression was actually the first one I tried out, with 
the only difference that I did It from within my application. This was 
before I knew that file:read_file and UTF-8 don't blend well. I used 
file:read_file to read in my UTF-8 encoded file... I only tried dilfen's
 expression from the CLI, and there it succeeded. At the point of 
posting I had tried so many different solutions that I was tired and 
just wanted my rather simple laboratory application to work. Later I found out that neither did that sample he gave work from my programs application scope or the one proposed form you. <br>
<br>
Further investigation has lead me to believe that re:run/3 has either an issue with strings lacking of linefeed. <br>
Putting some non valid xml in a file and using my rather simple program 
always yields([[{0,162}]]) the first char and the last points(see attached doc) ending char '>' as a 
match, it doesn't split them up as expected which is either the expected
 module behaviour which I find a bit odd or a(god forbid) programming 
fault from my part, Here is the code I use:<br>
<br>
-module(mock).<br>
-export([start/0, read_file/1, decode_data/1, find_pattern/3]).<br>
<br>
start() ->  <br>
        Bin = read_file("point.xml"),<br>
        UnicodeString = decode_data(Bin),<br>
        NodeList = find_pattern(UnicodeString, "<point.*\/>", [unicode, global]),<br>
        NodeList.<br>
<br>
read_file(File) -><br>
        case file:read_file(File) of<br>
                {ok, Bin} -> Bin;<br>
                _ -> []<br>
end.<br>
<br>
decode_data(Data) -><br>
         case unicode:characters_to_list(Data, utf8) of<br>
                 {error, Encoded, Rest} -><br>
                        io:format("Caught Error~w~n", Encoded, Rest),<br>
                        []; <br>
                 List -><br>
                        List<br>
 end.<br>
<br>
find_pattern(Str, Pattern, Options) -><br>
        case re:run(Str, Pattern, Options) of<br>
                {match, Part} -><br>
                        io:format("find_pattern: ~w~n", [Part]),<br>
                        Part;<br>
                nomatch -> []<br>
end.<br>
<br>However, adding a linefeed '\n' after each entity in the doc will give the expected result:<br>[[{0,27}],[{28,27}],[{56,27}],[{84,27}],[{112,27}],[{140,27}]]<br>which to me looks strange. Haven't read up on the re module that much but this is my experience.<br>
  <br>I have resigned to using xmerl_xpath which seems to do the job. I guess me coming from the Java world is a bit spoiled with strong support for string manipulation and doing the above would have taken men less then 10 min. <br>
<br>Anyway Thank you both for the effort.<br><br>BR,<br>Mathias Stalås<br><br><br><br><div class="gmail_quote">On Sat, Oct 30, 2010 at 8:47 PM, Hynek Vychodil <span dir="ltr"><<a href="mailto:hynek@gooddata.com">hynek@gooddata.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">I would not thanks on your place. It doesn't do what you want but<br>
works only by accident in this particular example. [^<point]* means<br>
any char except of '<', 'p', 'o', 'i', 'n', 't'. [^<]* would work in<br>
same way in this particular example.<br>
<br>
This would work much more generally<br>
<div class="im"><br>
re:run("<point x=\"12\" y=\"2\" z=\"4\"/><point x=\"4\"<br>
</div>y=\"2\"z=\"14\"/>", "<point.*?\/>",[global])<br>
<br>
but anyway you should use xml parser for xml parsing because xml is<br>
not parseable by regular grammar so regular expression is not proper<br>
tool for do it. You will end up with error prone solution.<br>
<div><div></div><div class="h5"><br>
On Sat, Oct 30, 2010 at 1:34 PM, Mathias <<a href="mailto:mathiasstalas@gmail.com">mathiasstalas@gmail.com</a>> wrote:<br>
> Works like a charm!<br>
><br>
> Many thanks dlfen!<br>
><br>
> BR,<br>
> Mathias<br>
><br>
> On Sat, Oct 30, 2010 at 1:03 PM, dlfen <<a href="mailto:erlangdlf@gmail.com">erlangdlf@gmail.com</a>> wrote:<br>
><br>
>> try this.<br>
>> re:run("<point x=\"12\" y=\"2\" z=\"4\"/><point x=\"4\" y=\"2\"<br>
>> z=\"14\"/>", "<point[^<point]*\/>",[global]).<br>
>><br>
>><br>
>> 在 2010-10-30,下午6:44, Mathias 写道:<br>
>><br>
>> > Hi there,<br>
>> ><br>
>> > I'm trying to figure out how Erlangs re:run module works.<br>
>> ><br>
>> > When executing this::<br>
>> > 1> re:run("<point x=\"12\" y=\"2\" z=\"4\"/><point x=\"4\" y=\"2\"<br>
>> > z=\"14\"/>", "<point(?:\s|.)*\/>").<br>
>> > {match,[{0,54}]}<br>
>> ><br>
>> > I can see that it gives me a match on the complete XML representation<br>
>> > {match,[{0,54}]}.<br>
>> ><br>
>> > But what I really would like to do is for it to give me a subset of<br>
>> matches<br>
>> > on each entity similar to {match,[{0,26},{27, 26}]}.<br>
>> ><br>
>> > so the output would yield  something like this:<br>
>> > 0-26 gives the first xml entity complete with it's attributes <point<br>
>> x="12"<br>
>> > y="2" z="4"/> and<br>
>> > match 27,26 gives the remaining entity.<br>
>> ><br>
>> > If anyone can spot why my regexp:<point(?:\s|.)*\/> is failing and guide<br>
>> me<br>
>> > in the right direction closer to find the solution it will be greatly<br>
>> > appreciated.<br>
>> ><br>
>> > I know about xmerl but for my trivial case it seems like overkill.<br>
>> ><br>
>> > Thx in advance.<br>
>> ><br>
>> > BR,<br>
>> > Mathias Stalås<br>
>><br>
>><br>
><br>
<br>
<br>
<br>
</div></div><font color="#888888">--<br>
--Hynek (Pichi) Vychodil<br>
<br>
Analyze your data in minutes. Share your insights instantly. Thrill<br>
your boss.  Be a data hero!<br>
Try GoodData now for free: <a href="http://www.gooddata.com" target="_blank">www.gooddata.com</a><br>
</font></blockquote></div><br>