[squeak-dev] Regular Expressions
Edgar De Cleene
edgardec2005 at gmail.com
Fri Nov 18 18:03:59 UTC 2016
I use VB-Regex-damienpollet.17.mcz
By the way, i use Nissus Writer Pro when need learn regex.
The ripping HTML tags expression is '(?:</?[0-9A-Za-z]+.*?>)’ which of course is not possible in Squeak.
> On Nov 18, 2016, at 11:05, Hans-Martin Mosner <hmm at heeg.de> wrote:
> I was going to write this:
> The "+" already means "match one or more of the previous", where "previous" in this case is ".", which means "any character".
> The "?" means "match zero or one of the previous", but it cannot be cmobined with "+".
> But then I realized that "+?" is defined in regex syntax as "lazy" matching, i.e. it finds as few of the previous tokens as needed to to make the pattern match (in contrast, standard "+" matches greedily, so it consumes as much as possible while still matching the pattern).
> However, the Rx framework in Squeak is quite old and does not have these extensions. A pattern that should work would be "<[^>]+>" which matches an opening angle bracket, any characters that are not closing angle brackets, and finally the closing bracket.
> Be aware though that correctly stripping tags from HTML is not possible (or at least not trivial) with regex. For example, in your pattern, the "." would not match newlines, but tags can extend over multiple lines, so you would not be able to strip out a multiline tag. My pattern apparently works with newlines, too, but there are other cases that it does not handle (for example, seehttp://stackoverflow.com/questions/94528/is-u003e-greater-than-sign-allowed-inside-an-html-element-attribute-value <http://stackoverflow.com/questions/94528/is-u003e-greater-than-sign-allowed-inside-an-html-element-attribute-value>).
> So unless you know that your input is going to be fairly regular, don't rely on regex to strip tags. Use a proper HTML/SGML/XML parser, they are designed to do it right.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Squeak-dev