$re = '~#https://www.native-english.ru/grammar/english-nouns-plural
(?<![a-z]) #word boundary
(?: [a-z]+ [bcdfghjklmnpqrtvwzeoya]s
| [a-z]+ (?:[sc]h|[sxoiv])es
| children|men|women|mice|teeth|feet|geese|oxen|deer|sheep|swine
)
$~msxi';
$str = 'area
areas
child
children
man
men
woman
women
mouse
mice
tooth
teeth
foot
feet
goose
geese
ox
oxen
deer
sheep
swine
cat
cats
bus
buses
moon
moones
class
classes
box
boxes
bush
bushes
inch
inches
match
matches
shelf
shelves
wive
wives
chief
chiefs
roof
roofs
safe
safes
army
armies
city
cities
employee
employees
day
days
toy
toys
boy
boys
hero
heroes
potato
potatoes
tomato
tomatoes
solo
solos
radio
radios
photo
photos
piano
pianos';
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