Как мы все знаем, в разработке программы неизбежно сталкиваться с ситуациями, когда строки необходимо подходить, искать, заменять и судить. Эти ситуации иногда сложнее. Если решить в чистом кодировании, это часто тратит время и энергию программистов. Следовательно, обучение и использование регулярных выражений стали основным средством разрешения этого противоречия.
Как мы все знаем, регулярные выражения - это спецификация, которую можно использовать для сопоставления и замены схем. Регулярное выражение - это буквальный шаблон, состоящий из обычных символов (таких как символы от A до z) и специальных символов (Metacharacters). Он используется для описания одной или нескольких струн, которые будут сопоставлены при поиске тела буквального. Регулярное выражение действует как шаблон в соответствии с шаблоном символа с поисковой строкой.
С тех пор, как JDK1.4 запустил пакет java.util.regex, он предоставил нам хорошую платформу приложений для регулярного выражения Java.
Поскольку регулярные выражения являются очень сложной системой, я приведу только несколько примеров вступительных концепций. Для получения дополнительной информации, пожалуйста, обратитесь к соответствующим книгам и изучите их самостоятельно.
// BackSlash
/t интервал ('/u0009')
/n Line Break ('/u000a')
/r enter ('/u000d')
/D Номер эквивалентен [0-9]
/D Несурящий эквивалентен [^0-9]
/S пустой символ [/t/n/x0b/f/r]
/S не блунковый символ [^/t/n/x0b/f/r]
/w индивидуальный символ [a-za-z_0-9]
/W не индивидуальный характер [^a-za-z_0-9]
/f страница перерыв
/E побег
/b Граница слова
/B A не слов
/G конец предыдущего матча
^ начинается с ограничения
^предел условия Java - для персонажей, начиная с Java
$ - это конец лимита
java $ limit limit-это персонажи на Java-end
Полем Условный ограничивает любой отдельный символ, кроме /n
Java .. После предела состояния - Java, любые два персонажа, кроме Newline
Добавьте конкретные ограничения "[]"
[AZ] Условия ограничены персонажем в диапазоне с нижним регистрацией от A до Z
[AZ] Условия ограничены одним персонажем в диапазоне от AUP -A -Z Z
Условия [A-za-z] ограничены характером в нижнем диапазоне от от А до z или в верхнем регионе от А до z
[0-9] Условия ограничены одним символом в диапазоне от 0 до 9
[0-9A-Z] Условия ограничены в диапазоне от 0 до 9 или диапазона от А до Z
[0-9 [AZ]] Условия ограничены в нижнем регионе от 0 до 9 или диапазоном от от А до Z (пересечение)
[] и снова добавьте условие ограничения "[^]"
[^az] Условия ограничены характером в диапазоне неэлайцевой А-А до z
Условие [^az] ограничивает один символ в диапазоне от А от А до Z
Условия [^a-za-z] ограничены характером в диапазоне неэладочных от А до z или прописхи.
[^0-9] Условия ограничены одним символом в диапазоне Non-LowerCase от 0 до 9
[^0-9A-Z] Условия ограничены характером в диапазоне не LowerCase от 0 до 9 или от A до z
[^0-9 [AZ]] Условия ограничены характером в диапазоне не LowerCase от 0 до 9 или от A до z (пересечение)
Когда условие ограничения состоит в том, что конкретный символ появляется более чем в 0 раз, вы можете использовать "*"
J* больше 0 J
.* Любой символ выше 0
J.*DJ и D Любые 0 символов
Когда условие ограничения состоит в том, что конкретный символ появляется более одного раза, вы можете использовать "+"
J+ 1 или более J
.+ 1 или более произвольных символов
J.+1 или более характер между DJ и D
Когда условие ограничения появляется в 0 или более раз, "?" можно использовать.
Ja? J или JA появляется
Ограничение непрерывного появления указанного номера символа "{a}"
J {2} JJ
J {3} jjj
Больше, чем текст, и "{a,}"
J {3,} jjj, jjjjj, jjjjj, ??? (J сосуществует более 3 раза)
Более одного текста, меньше, чем b "{a, b}"
J {3,5} jjj или jjjj или jjjjj
Возьмите один из двух
J | AJ или A.
Java | Привет, Java или привет
«()», например, указывает тип комбинации, если я запрошу данные между <a href =/"index.html/"> index </a>, я могу написать <a.*href =/".*/"> (.+?) </a>
При использовании функции Pattern.compile вы можете добавить параметры, которые управляют соответствующим поведением регулярных выражений:
Шаблон Pattern.compile (string regex, int flag)
Диапазон значений флагов заключается в следующем:
Pattern.canon_eq. Матч определяется тогда и только тогда, когда «каноническое разложение» двух символов точно одинаковое. Например, после использования этого флага выражение «A/U030A» будет соответствовать »?». По умолчанию «каноническое равенство» не рассматривается.
Pattern.case_insensity (? I) По умолчанию, идентифицированное на корпус соответствие доступно только для наборов символов US-ASCII. Этот флаг позволяет выражениям игнорировать корпус для сопоставления. Чтобы соответствовать символам Unicode с неизвестным размером, просто объедините Unicode_case с этим флагом.
Паттерны. Комментарии начинаются с # и заканчиваются в этой строке. Режим строки Unix может быть включен через встроенные флаги.
Pattern.dotall (? S) в этом режиме, выражение '.'. ' может соответствовать любому персонажу, включая конечный символ, представляющий строку. По умолчанию, выражение '. не соответствует конечному характеру линии.
Паттерн.multiline
(? M) В этом режиме '^' и '$' совпадают с началом и конец строки соответственно. Кроме того, '^' все еще соответствует началу строки, и '$' также соответствует конец строки. По умолчанию эти два выражения совпадают только с началом и конец строки.
Pattern.unicode_case
(? U) В этом режиме, если вы также включите флаг case_insignity, он будет соответствовать символам Unicode с неопознанным случаем. По умолчанию нечувствительное соответствие, доступно только для наборов символов US-ASCII.
Pattern.UNIX_LINES (? D) В этом режиме только '/n' считается прерыванием линии и совпадений '.', '^' И '$'.
Откладывая пустую концепцию, вот несколько простых вариантов регулярного использования Java:
◆ Например, когда строка содержит проверку
// Найти строку, которая начинается с Java и заканчивается в Will Pattern = Pattern.compile ("^java.*"); Matcher Matcher = pattern.matcher («Java не человек»); Boolean b = matchter.matches (); // Когда условие будет удовлетворено, оно вернет true, в противном случае false System.out.println (b); ◆ При разделении строк с несколькими условиями
Шаблон шаблона = pattern.compile ("[, |]+"); string [] strs = pattern.split ("java hello world java, hello ,, мир | sun"); for (int i = 0; i <strs.length; i ++) {System.out.println (strs [i]);} ◆ Замена текста (символ появляется впервые)
Паттерн Pattern = Pattern.compile («Регулярное выражение»); Matcher Matcher = pattern.matcher («Регулярное выражение Hello World, регулярное выражение Hello World»); // заменить первые данные, которые соответствуют системе регулярности.out.println (matcher.replacefirst ("java")); ◆ Замена текста (все)
Паттерн Pattern = Pattern.compile («Регулярное выражение»); Matcher Matcher = pattern.matcher («Регулярное выражение Hello World, регулярное выражение Hello World»); // Заменить первые данные, которые соответствуют системе регулярности.out.println (matcher.replaceall ("java")); ◆ Замена текста (замените символы)
Шаблон шаблона = pattern.compile ("обычное выражение"); matchter matcher = pattern.matcher ("Регулярное выражение Hello World, регулярное выражение Hello World"); StringBuffer SBR = new StringBuffer (); while (matcher.find ()) {matchter.appendreplacement (sbr, "java");} matcher.appendtail (sbr); System.out.println (sbr.toString ());◆ Убедитесь, является ли это адрес электронной почты
String str = "[email protected]"; паттерн = pattern.compile ("[// w //.//-]+@(*// w //-++//.)+=// w //-]+", pattern.case_insensitive); matcher matcher = pattern.macher (str);
◆ Удалить теги HTML
Шаблон шаблона = pattern.compile ("<.+?>", Pattern.dotall); matchter matcher = pattern.matcher ("<a href =/" index.html/"> home </a>"); String String = matcher.replaceall (""); System.out.println (String); ◆ Найти соответствующую строку условия в HTML
Pattern Pattern = pattern.compile ("href =/" (.+?)/""); Matchter Matcher = pattern.matcher ("<a href =/" index.html/"> home </a>"); if (matcher.find ()) system.out.println (matcher.group (1);}; ◆ Intercept http: // адрес
// urlpept urlpattern pattern = pattern.compile ("(http: // | https: //) {1} [//w//.//-/:]+"); matchter matcher = pattern.matcher ("dsddsds <http: // dsds // gfgffd> fdf"); while (matcher.find ()) {buffer.append (matcher.group ()); buffer.append ("/r/n"); System.out.println (buffer.toString ());}◆ Заменить указанные {} китайские символы
String str = "Текущая история развития Java от {0} Years - {1} Years"; String [] [] object = {new String [] {"// {0 //}", "1995"}, new String [] {"// {1 //}", "2007"}}; Sourcestring, Object [] Object) {String temp = sourcestring; for (int i = 0; i <object.length; i ++) {string [] result = (string []) object [i]; Pattern Pattern = pattern.compile (результат [0]); Matcher Matcher = pattern.matcher (temp); temp = matcher.replaceall (результат [1]); } return temp;}◆ Файлы запросов в специальностях с регулярными условиями
// используется для кэширования списка файлов private ArrayList files = new ArrayList (); // используется для хоста пути файла private String _Path; // используется для размещения непревзойденной регулярной формулы частной строки _regexp; класс myFileFilter реализует FileFilter { / *** Match File name* / public boolean Accept (файл файла) {try {pattern pattern = pattern.compile (_regexp); Matcher Match = pattern.matcher (file.getName ()); return match.matches (); } catch (Exception e) {return true; }}} / *** Анализ входного потока* @param входы* / filesanalyze (string path, string regexp) {getFilename (path, regexp); } /** * Проанализируйте имя файла и добавьте файлы * @param input * /private void getFilename (String Path, String regexp) {// Directory_path = path; _Regexp = regexp; File Directory = новый файл (_Path); File [] files -file = directory.listfiles (new MyFileFilter ()); if (files -file == null) return; for (int j = 0; j <filesfile.length; j ++) {files.add (filesfile [j]); } возвращаться; } / *** Показать информацию о выводе* @param out* / public void print (printstream out) {iterator elements = files.iterator (); while (elements.hasnext ()) {file file = (file) elements.next (); out.println (file.getPath ()); }} public static void output (String Path, String regexp) {filesAnalyze fileGroup1 = new FilesAnalyze (path, regexp); filegroup1.print (system.out); } public static void main (string [] args) {output ("c: //", "[az |.]*"); }Есть много функций регулярности Java. На самом деле, до тех пор, пока это обработка персонажа, нет ничего, что регулярность не может сделать. (Конечно, требуется много времени, чтобы регулярно объяснять это ||| ...)
Выше приведено информация, разбирая Java регулярные выражения. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!