We can not use
/(?:\p{Greek}|\p{Upper})/
or
/[\p{Greek}\p{Upper}]/
One way to achieve AND in regular expression is to use backlinks.
/\p{Greek}(?<=\p{Upper})/
Another way to get AND is to negate OR. de morgan laws informs us
NOT( Greek AND Upper ) ⇔ NOT(Greek) OR NOT(Upper)
So
Greek AND Upper ⇔ NOT( NOT(Greek) OR NOT(Upper) )
It gives us
/[^\P{Greek}\P{Upper}]/
Starting with 5.18, there is also an experimental function that you can use:
no warnings qw( experimental::regex_sets ); /(?[ \p{Greek} & \p{Upper} ])/
ikegami
source share