$re = '/^(?:(?:[a-z]+\d*[-_])+[a-z]+\d*(?:_64)?)/m';
$str = 'kernel-debug-modules-extra-4.18.0-80.2.el8.x86_64.rpm
kernel-debug2-modules-extra-4.18.0-80.2.el8.x86_64.rpm
kernel-debug-modules2-extra-4.18.0-80.2.el8.x86_64.rpm
kernel-debug-modules-extra2-4.18.0-80.2.el8.x86_64.rpm
kernel-debug-4.18.0-80.2.el8.x86_64.rpm
kernel-debug-core-4.18.0-80.2.el8.x86_64.rpm
kernel-debug-devel-4.18.0-80.2.el8.x86_64.rpm
kernel-debug-modules-4.18.0-80.2.el8.x86_64.rpm
python3-perf-4.18.0-80.2.el8.x86_64.rpm
python3-perf2-4.18.0-80.2.el8.x86_64.rpm
kernel-debuginfo-common-x86_64-4.18.0-80.2.el8.x86_64.rpm
kernel_debuginfo_common-x86_64-4.18.0-80.2.el8.x86_64.rpm
----
desired output (exlude words which starts with hypen and digit (-4.xxx) and exclude -x86_64):
kernel-debug-modules-extra
kernel-debug2-modules-extra
kernel-debug-modules2-extra
kernel-debug-modules-extra2
kernel-debug
kernel-debug-core
kernel-debug-devel
kernel-debug-modules
python3-perf
python3-perf2
kernel-debuginfo-common
kernel_debuginfo_common';
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