Операции, которые могут использовать регулярные выражения для String, на самом деле используют функции java.util.regex.Pattern и java.util.regex.Matcher. При вызове метода match() класса String он фактически вызывает статический метод match() класса Pattern. Этот метод возвращает логическое значение, указывающее, соответствует ли строка регулярному выражению.
Если вы хотите рассматривать регулярное выражение как объект для повторного использования, вы можете использовать статический метод compile() шаблона для его компиляции. Метод compile() вернет экземпляр Pattern, который представляет регулярное выражение. Затем вы можете повторно использовать метод matcher() экземпляра Pattern, чтобы вернуть экземпляр Matcher, который представляет экземпляр, соответствующий регулярному выражению. Есть несколько поисков. в этом экземпляре для работы доступны методы, соответствующие условиям регулярных выражений. Пример 6.11 демонстрирует это.
** Пример 6.11. UsePatternMatcher.java.
импортировать java.util.regex.*;
общественный класс UsePatternMatcher {
public static void main(String[] args) {
Строка телефонов1 =
«Номер мобильного телефона Джастина: 0939-100391n» +
"номер мобильного телефона мамы: 0939-666888n";
Шаблон шаблона = Pattern.compile(".*0939-\d{6}");
Matcher matcher = шаблон.matcher(phones1);
в то время как (matcher.find()) {
System.out.println(matcher.group());
}
Строка телефоны2 =
"Номер мобильного телефона Caterpillar: 0952-600391n" +
«номер мобильного телефона Буша: 0939-550391»;
matcher = шаблон.matcher(phones2);
в то время как (matcher.find()) {
System.out.println(matcher.group());
}
}
}
В примере 6.11 будет выполняться поиск номеров, начинающихся с 0939. Предполагая, что номера получены из более чем одного источника (например, телефоны1, телефоны2), вы можете скомпилировать регулярное выражение и вернуть объект Pattern. Затем вы можете повторно использовать этот объект Pattern во время сравнения. Используйте matcher() для возврата соответствующих экземпляров Matcher. Метод find() указывает, существует ли совпадающая строка, а метод group() может вернуть совпадающую строку. Результаты выполнения программы следующие:
Мобильный номер Джастина: 0939-100391.
номер мобильного телефона мамы: 0939-666888.
Номер мобильного телефона Буша: 0939-550391.
Давайте перепишем пример 6.9, используя Pattern и Matcher, чтобы программа могла возвращать строки, соответствующие регулярному выражению, вместо возвращаемых строк, которые не совпадают.
** Пример 6.12RegularExpressionDemo2.java.
импортировать java.util.regex.*;
общественный класс RegularExpressionDemo2 {
public static void main(String[] args) {
Строковый текст = «abcdebcadxbc»;
Шаблон шаблона = Pattern.compile(".bc");
Сопоставитель = шаблон.Сопоставитель(текст);
в то время как (matcher.find()) {
System.out.println(matcher.group());
}
Система.out.println();
}
}
style='font-family:宋体'>Результаты выполнения:
абв
ebc
xbc
Эта статья взята из блога CSDN. При перепечатке указывайте источник: http://blog.csdn.net/wofe912/archive/2009/12/18/5030571.aspx.