[fpc-pascal] How to split file of whitespace separated numbers?

Graeme Geldenhuys mailinglists at geldenhuys.co.uk
Tue Dec 27 01:18:00 CET 2016


On 2016-12-24 11:52, Mark Morgan Lloyd wrote:
> regexes are useful.

Very much so, and I’m far from being an expert. But I am finding more
and more uses for them, the more I use them.


> BUT FFS DOCUMENT WHAT YOU'RE DOING FOR PEOPLE WHO DON'T UNDERSTAND THEM!

The same can be said for standard code too. At least with regex, there
are plenty of tools that explain what they do, and what each part means.

For example:

http://rick.measham.id.au/paste/explain.pl?regex=%5Cb%5B-%2B%5D%3F%5B0-9%5D%2B%28%3F%3A%5C.%5B0-9%5D%2B%29%3F%5Cb


NODE                     EXPLANATION
--------------------------------------------------------------------------------
  \b                       the boundary between a word char (\w) and
                           something that is not a word char
--------------------------------------------------------------------------------
  [-+]?                    any character of: '-', '+' (optional
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  [0-9]+                   any character of: '0' to '9' (1 or more
                           times (matching the most amount possible))
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (optional
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    \.                       '.'
--------------------------------------------------------------------------------
    [0-9]+                   any character of: '0' to '9' (1 or more
                             times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )?                       end of grouping
--------------------------------------------------------------------------------
  \b                       the boundary between a word char (\w) and
                           something that is not a word char


That tells you exactly what each part of the following regex means:

   ⌜\b[-+]?[0-9]+(?:\.[0-9]+)?\b⌟

Note:
  I wrap the regex with ⌜ and ⌟ character to denote the start and
  end of the regex. Some people get confused when you use double
  quotes.


I believe Perl or egrep or something can output the exact same “regex
explanation” information from the command line.


Regards,
  Graeme

-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

My public PGP key:  http://tinyurl.com/graeme-pgp


More information about the fpc-pascal mailing list