java.util.regex - PullRequest
       1

java.util.regex

3 голосов
/ 18 января 2011

Может кто-нибудь объяснить мне, как определить с помощью регулярных выражений любую строку, которая содержит, например, один символ P? Не могли бы вы также объяснить, как это оценивается тоже?

РЕДАКТИРОВАТЬ: В чем разница между [^P*] и [^P]*?

Ответы [ 3 ]

6 голосов
/ 18 января 2011

Строка, содержащая один P-символ:

  • (возможно, пустая) строка, содержащая не P-символы
  • a P
  • a (возможно, пустая)) строка, содержащая не-P символы

В формате регулярного выражения это:

^[^P]*P[^P]*$

, где:

  • ^ соответствуетначало строки
  • [^P]* соответствует любому символу, кроме P, 0 или более раз
  • P соответствует P
  • [^P]* соответствует любому символу, кромеa P, 0 или более раз
  • $ соответствует концу строки

Разница между [^P*] и [^P]* составляет:

  • [^P*] соответствует любому одному символу, который не является ни P, ни *
  • [^P]* соответствует нулю или более символов, которые не являются P

Размещениеиз * здесь, конечно, важно.Внутри [], * не имеет особого значения.Вне [], * означает «соответствовать предыдущей вещи ноль или более раз».

2 голосов
/ 18 января 2011

Дэвид, я думаю, мой ответ на один из твоих предыдущих вопросов поможет тебе. Что касается оценки, я не уверен, что вы имеете в виду, но вы можете проверить документацию API для класса Pattern .

Разница между [^ P *] и [^ P] * составляет:

  • [^ P *] означает «один символ, который не является P и *»
  • [^ P] * означает «ноль или более символов, которые не являются P»
1 голос
/ 18 января 2011

при условии, что вы действительно хотите проверить на единственную букву "P". вот подход без регулярных выражений.

for(int i = 0 ;i< string.length(); i++){
    if ( string.charAt(i) == 'P' ){
        count++;
    }
}
if ( count == 1 ){
    System.out.println("String contains a single P");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...