как кодировать строку в шаблон и получить строку - PullRequest
0 голосов
/ 10 февраля 2010

Вопрос закрыт, потому что я неправильно понял ситуацию. Чтобы показать свою глупость, я не буду удалять то, что написал.

Я бы хотел закодировать кусок строки в Pattern и получить строку обратно.

Я пытался:

String s = buff.readLine();
Pattern p = new Pattern(s);

и используйте следующее для получения моей строки

System.out.println(p.toString());

Но это не сработало, вывод - это просто "имя пакета @ (некоторые случайные вещи) ... Я пытался Pattern p = Pattern.compile (s); но я получил ошибку от компилятора.

Ответы [ 3 ]

1 голос
/ 10 февраля 2010

Javadoc для Pattern#toString(), кажется, указывает на то, что источник полного регулярного выражения возвращается только после Java 1.5. Однако Pattern#pattern() не имеет тега Since, поэтому он предположительно доступен с момента появления класса (java 1.4). Попробуйте System.out.println(p.pattern());

1 голос
/ 10 февраля 2010

Ну, я только что попробовал это:

Pattern p = Pattern.compile("Hello");
System.out.println( p.toString() );

И это сработало, распечатав «Привет».

Импортируете ли вы пакет java.util.regex.Pattern?

0 голосов
/ 10 февраля 2010

Вы используете объект Pattern регулярных выражений для хранения и извлечения строки.Это не имеет никакого смысла.Шаблон не используется для хранения строк.Шаблон используется для поиска других строк.Это движок регулярных выражений.Позвольте мне привести пример использования Pattern.

У нас действительно есть 2 объекта при использовании регулярных выражений в Java.Pattern и Matcher.

Pattern = Регулярное выражение.
Matcher = Все совпадения, найденные при применении Pattern к строке.

Позвольте мне привести пример Patternи Matcher, мы будем искать четыре цифры, разделенные двоеточием, как и во времени, т.е. 12: 42

long timeL;
Pattern pattern = Pattern.compile(".*([1234567890]{2}:[1234567890]{2}).*");
Matcher matcher = pattern.matcher("Match me!  12:42  Match me!");
if (matcher.matches()) {
 String timeStr = matcher.group(1);
 System.out.println("Just the time: "+timeStr);
 System.out.println("The entire String: "+matcher.group(0));
 String[] timeParts = timeStr.split("[:]");
 int hours = Integer.parseInt(timeParts[0]);
 int minutes = Integer.parseInt(timeParts[1]);
 timeL = (hours*60*60*1000) + (minutes*60*1000);
 System.out.println(timeL);
}

После того, как мы применили Pattern к строке и получили Matcher,мы спрашиваем, есть ли у Matcher совпадение или нет.Вы заметите, что тогда мы запрашиваем группу 1, которая соответствует в параграфах в:. ([1234567890] {2}: [1234567890] {2}). группа 0 будет полным совпадениеми может привести к возвращению данной строки.

Итак, я надеюсь, вы понимаете, почему крайне странно использовать Pattern для хранения строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...