Если вы хотите написать все в нижнем регистре сразу после подчеркивания, то это будет работать для вас:
echo getFoo_Bar | gawk -F_ '{print tolower($2)}'
Итак:
"[^/?*:;{}\\]+\\.[^/?*:;{}\\]+"
«Один или несколько символов, не относящихся ни к одному из этих, затем точка, затем еще несколько символов, которые не являются этими»
(Если вы уверены, что точка действительно нужна - в противном случае это просто: "[^ /? * :; {} \\] +"
$a = preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', 'file.abc');
^ ... $ - begin and end of the string
[^ ... ] - matches NOT the listed chars.
Регулярное выражение будет выглядеть примерно так (для трехбуквенного расширения):
^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$
PHP нужно экранировать обратную косую черту, а preg_match ()
нужно экранировать косую черту, поэтому:
$pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/";
Чтобы сопоставить имена файлов вроде "hosts"
или ". Htaccess"
, используйте это слегка измененное выражение:
^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$