Строка, содержащая один P-символ:
- (возможно, пустая) строка, содержащая не P-символы
- a P
- a (возможно, пустая)) строка, содержащая не-P символы
В формате регулярного выражения это:
^[^P]*P[^P]*$
, где:
^
соответствуетначало строки [^P]*
соответствует любому символу, кроме P, 0 или более раз P
соответствует P [^P]*
соответствует любому символу, кромеa P, 0 или более раз $
соответствует концу строки
Разница между [^P*]
и [^P]*
составляет:
[^P*]
соответствует любому одному символу, который не является ни P, ни * [^P]*
соответствует нулю или более символов, которые не являются P
Размещениеиз *
здесь, конечно, важно.Внутри []
, *
не имеет особого значения.Вне []
, *
означает «соответствовать предыдущей вещи ноль или более раз».