$re = '/[ptkmnlswj]?
(?:(?<=w)[aei]|
(?<=[jt])[aeou]|
(?<=[pkmnls])[aeiou]|
(?<=\b)[aeiou])
(?:n(?![nm]?[aeiou]))?/xi';
$str = '#Sanity Checks:
---
toki pona
nanpa wan
toki li pona mama tuliwan sulisuli
mi olin e sina
---
#These should not work:
---
titijiji
tanna
nanma
---
#Some sentences from Wikipesija page for Linguistics:
---
toki Inli (kepeken toki Inli: EngLish) li toki suli.
toki Inli li kama tan ma Piten. taso tenpo ni la jan li kepeken kin e toki Inli lon ma Mewika lon ma Kanata lon ma Oselija lon ma Nusilan. jan li toki kin e toki Inli lon ma ante mute. toki Inli li toki pi ma sike. toki Inli li jo e kepeken mute.
---
a an e en i in o on u un
pa pan pe pen pi pin po pon pu pun
ta tan te ten ti tin to ton tu tun
ka kan ke ken ki kin ko kon ku kun
ma man me men mi min mo mon mu mun
na nan ne nen ni nin no non nu nun
sa san se sen si sin so son su sun
ja jan je jen ji jin jo jon ju jun
la lan le len li lin lo lon lu lun
wa wan we wen wi win wo won wu wun
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php