Value NUMBER (\d+)
Value FLAGS ([XRDB]+)
Value ADDRESS (\S+)
Value MAC_ADDRESS ((?:[0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2})
Value HOST_NAME (\S+)
Value SERVER (\S+)
Value RATE_LIMIT (\S+)
Value STATUS (\S+)
Value LAST_SEEN (\S+)

Start
  ^\s*Flags:\s+\w\s+-\s+\S+
  ^\s*Columns:\s+ADDRESS,\s+MAC-ADDRESS,\s+HOST-NAME,\s+SERVER,\s+STATUS,\s+LAST-SEEN\s*$$
  ^\s*(#|Columns:)\s+ADDRESS,?\s+MAC-ADDRESS,?\s+HOST-NAME,?\s+SERVER,?\s+(?:RATE-LIMIT,?\s+)?STATUS,?\s+LAST-SEEN,?\s*$$ -> EntriesTable
  ^. -> Error

EntriesTable
  # Impossible to separate HOST-NAME and SERVER? Have the same regex, can be empty,
  # are next to each other -> use '...print terse...' version of the command
  ^\s*${NUMBER}(?:\s+${FLAGS})?\s+${ADDRESS}(?:\s+${MAC_ADDRESS})?(?:\s+${HOST_NAME})?\s+${SERVER}(?:\s+${RATE_LIMIT})?\s+${STATUS}\s+${LAST_SEEN}\s*$$ -> Record
  ^\s*$$
  ^. -> Error
