So, I did a little experimenting this weekend and found that the ICU
RegEx engine is actually really capable.

o  It's fast.

o  It supports {n,m} characters instead of bytes

o  It even works (though a little slow) with lookaheads and lookbacks,
e.g., for words in any order: (?=.*God)(?=.*world)(?=.*love)

    whereas that fails to compile or simply doesn't work in our other
regex engine options.

So, I've added it as an option --with-icuregex  and actually made it the
default in usrinst.sh

You can check it out from trunk or else wait for the next RC.

Planning to look at the issues Peter mentioned and then push our another RC.

Troy


On 03/06/2017 06:17 PM, Troy A. Griffitts wrote:
>
> Yeah, so this page shows that c11x regex is still mostly unsupported
> in gcc:
>
> http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr1
>
> (see section 7)
>
> And the old school gnu regex we use otherwise I don't think knows
> anything about wide chars.  It simply compares bytes and does have a
> clue if some should be considered part of the same byte.  I suspect
> that because nowhere do we tell it that we're giving it UTF-8.
>
> Ultimately my hope is that gcc will improve eventually and solve our
> problem for us.  We could use
>
> We could add an option to use ICU RegexMatcher, but I'm still holding
> out for our compiler.
>
> Troy
>
>
> On 03/06/2017 05:52 PM, Karl Kleinpaste wrote:
>> On 03/06/2017 05:25 PM, Greg Hellings wrote:
>>> being off by 2 would seem strange to me
>> I don't understand this question at all.
>>
>> 0xE2 = 226 = 0342
>> 0x80 = 128 = 0200
>> 0x93 = 147 = 0223
>>
>> There's no off-by error at all.
>>
>> "od" is the "octal dump" tool; given -c, it tries to dump characters,
>> but outside 7-bit ASCII, it still dumps octal.
>>
>> For those familiar with dc(1), this will make sense
>> $ dc
>> 8o
>> 226p
>> 342
>> 128p
>> 200
>> 147p
>> 223
>> 16i
>> 0XE2p
>> 342
>> 0X80p
>> 200
>> 0X93p
>> 223
>>
>> The interesting questions are why C++11 regex can't find /en dash/,
>> and why non-C++11 regex doesn't understand multibyte.
>>
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel@crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>
>
>
> _______________________________________________
> sword-devel mailing list: sword-devel@crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page

_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page

Reply via email to