Skip to content

Instantly share code, notes, and snippets.

@paranoiq
Last active September 5, 2015 04:54
Show Gist options
  • Save paranoiq/438335 to your computer and use it in GitHub Desktop.
Save paranoiq/438335 to your computer and use it in GitHub Desktop.
<?php // regulární výraz pro tokenizaci českých číslovek v rozsahu 1 až 999.999 v prvním a druhém pádu
$re = "//(?<=\W)(?:(?:(?:(?:(?:(?:(?:(jed)(?:en|na|nu|né|noho|něch)|(dv)(?:a|ě|ou)|(tř)(?:i|í|ech)|(čtyř)(?:i|ech)?|(pět)i?|(šest)i?|(sedm)i?|(osm)i?|(dev)(?:ět|íti))) )?(s)(?:to|tě|ta|et|tov(?:ka|ky|ek)))? ?(?:(?:(?:(?:(?:(?:(jed)(?:en|na|nu|né|noho|něch)|(dv)(?:a|ě|ou)|(tř)(?:i|í|ech)|(čtyř)(?:i|ech)?|(pět)i?|(šest)i?|(sedm)i?|(osm)i?|(dev)(?:ět|íti))a)|(jed)na)(?:(dvacet)i?|(třicet)i?|(čtyřicet)i?|(padesát)i?|(šedesát)i?|(sedmdesát)i?|(osmdesát)i?|(devadesát)i?))|(?:(?:(dvacet)i?|(třicet)i?|(čtyřicet)i?|(padesát)i?|(šedesát)i?|(sedmdesát)i?|(osmdesát)i?|(devadesát)i?)(?: (?:(jed)(?:en|na|nu|né|noho|něch)|(dv)(?:a|ě|ou)|(tř)(?:i|í|ech)|(čtyř)(?:i|ech)?|(pět)i?|(šest)i?|(sedm)i?|(osm)i?|(dev)(?:ět|íti)))?)|(?:(?:(jedenáct)i?|(dvanáct)i?|(třináct)i?|(čtrnáct)i?|(patnáct)i?|(šestnáct)i?|(sedmnáct)i?|(osmnáct)i?|(devatenáct)i?))|(?:(?:(jed)(?:en|na|nu|né|noho|něch)|(dv)(?:a|ě|ou)|(tř)(?:i|í|ech)|(čtyř)(?:i|ech)?|(pět)i?|(šest)i?|(sedm)i?|(osm)i?|(dev)(?:ět|íti)))|(?:(des)(?:eti?|íti))))?) )?(tisíc)(?:e|i|ů)?)? ?(?:(?:(?:(?:(?:(jed)(?:en|na|nu|né|noho|něch)|(dv)(?:a|ě|ou)|(tř)(?:i|í|ech)|(čtyř)(?:i|ech)?|(pět)i?|(šest)i?|(sedm)i?|(osm)i?|(dev)(?:ět|íti))|(?:(jedenáct)i?|(dvanáct)i?|(třináct)i?|(čtrnáct)i?|(patnáct)i?|(šestnáct)i?|(sedmnáct)i?|(osmnáct)i?|(devatenáct)i?)) )?(s)(?:to|tě|ta|et|tov(?:ka|ky|ek)))? ?(?:(?:(?:(?:(?:(?:(jed)(?:en|na|nu|né|noho|něch)|(dv)(?:a|ě|ou)|(tř)(?:i|í|ech)|(čtyř)(?:i|ech)?|(pět)i?|(šest)i?|(sedm)i?|(osm)i?|(dev)(?:ět|íti))a)|(jed)na)(?:(dvacet)i?|(třicet)i?|(čtyřicet)i?|(padesát)i?|(šedesát)i?|(sedmdesát)i?|(osmdesát)i?|(devadesát)i?))|(?:(?:(dvacet)i?|(třicet)i?|(čtyřicet)i?|(padesát)i?|(šedesát)i?|(sedmdesát)i?|(osmdesát)i?|(devadesát)i?)(?: (?:(jed)(?:en|na|nu|né|noho|něch)|(dv)(?:a|ě|ou)|(tř)(?:i|í|ech)|(čtyř)(?:i|ech)?|(pět)i?|(šest)i?|(sedm)i?|(osm)i?|(dev)(?:ět|íti)))?)|(?:(?:(jedenáct)i?|(dvanáct)i?|(třináct)i?|(čtrnáct)i?|(patnáct)i?|(šestnáct)i?|(sedmnáct)i?|(osmnáct)i?|(devatenáct)i?))|(?:(?:(jed)(?:en|na|nu|né|noho|něch)|(dv)(?:a|ě|ou)|(tř)(?:i|í|ech)|(čtyř)(?:i|ech)?|(pět)i?|(šest)i?|(sedm)i?|(osm)i?|(dev)(?:ět|íti)))|(?:(des)(?:eti?|íti))))?)?(?: (?:a )?)?(?:(čtvrt)|(půl)|tř(?:i|í|ech)( čtvrt)(?:ě|i|in))?(?=\W)/um";
// a tokeny
$tokens = array(
'jed' => 1,
'dv' => 2,
'tř' => 3,
'čtyř' => 4,
'pět' => 5,
'šest' => 6,
'sedm' => 7,
'osm' => 8,
'dev' => 9,
'des' => 10,
'jedenáct' => 11,
'dvanáct' => 12,
'třináct' => 13,
'čtrnáct' => 14,
'patnáct' => 15,
'šestnáct' => 16,
'sedmnáct' => 17,
'osmnáct' => 18,
'devatenáct'=> 19,
'dvacet' => 20,
'třicet' => 30,
'čtyřicet' => 40,
'padesát' => 50,
'šedesát' => 60,
'sedmdesát' => 70,
'osmdesát' => 80,
'devadesát' => 90,
's' => 100,
'tisíc' => 1000,
'čtvrt' => '0.25',
'půl' => '0.5',
' čtvrt' => '0.75',
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment