Эта статья участвует"Проект "Звезда раскопок"", чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.
Домашняя страница автора:Ява Ли ЯнгёнШаблон резюме, учебные материалы, банк вопросов для собеседования, техническая взаимопомощь [Следуй за мной, все для тебя]
Регулярные выражения часто используются в наших повседневных проектах разработки (например, электронная почта/номер телефона/доменное имя/ip-адрес и т. д.) На самом деле строка представляет собой простое регулярное выражение, например регулярное выражение **Hello World** соответствует строке «Hello World». . (точка) также является регулярным выражением, которое соответствует любому символу, такому как: "a" или "1".
В следующей таблице перечислены некоторые примеры и описания регулярных выражений:
регулярное выражение | описывать |
---|---|
this is text | соответствует строке "это текст" |
this\s+is\s+text | Обратите внимание на строку\s+. Соответствия после слова «этот»\s+Может соответствовать нескольким пробелам, затем соответствовать строке is, а затем\s+Соответствует нескольким пробелам, за которыми следует текстовая строка. Может соответствовать этому экземпляру: это текст |
^\d+(.\d+)? | ^ определяет, что начинается с \d+ соответствует одной или нескольким цифрам? Установка параметров в круглых скобках необязательна. Соответствует ".", чтобы соответствовать экземплярам: "5", "1.5" и "2.21". |
Регулярные выражения Java больше всего похожи на Perl.
Пакет java.util.regex в основном включает следующие три класса:
-
Класс шаблона:
Объект шаблона представляет собой скомпилированное представление регулярного выражения. Класс Pattern не имеет открытого конструктора. Чтобы создать объект Pattern, вы должны сначала вызвать его общедоступный статический метод компиляции, который возвращает объект Pattern. Метод принимает регулярное выражение в качестве первого параметра.
-
Класс сопоставления:
Объект Matcher — это механизм, который интерпретирует и сопоставляет входную строку. Как и класс Pattern, Matcher не имеет открытого конструктора. Вам нужно вызвать метод сопоставления объекта Pattern, чтобы получить объект Matcher.
-
PatternSyntaxException:
PatternSyntaxException — необязательный класс исключений, представляющий синтаксическую ошибку в шаблоне регулярного выражения. Регулярные выражения используются в следующих примерах.runoob.Используется для определения того, содержит ли строкаrunoobподстрока:
import java.util.regex.*;
class RegexExample1{
public static void main(String[] args){
String content = "I am noob " + "from runoob.com.";
String pattern = ".*runoob.*";
boolean isMatch = Pattern.matches(pattern, content);
System.out.println("字符串中是否包含了 'runoob' 子字符串? " + isMatch);
}
}
Содержит ли окончательная строка печати подстроку «runoob»?
Грамматика регулярных выражений
На других языках \ означает:Я хочу вставить в регулярное выражение обычную (буквальную) обратную косую черту, пожалуйста, не придавайте ей особого значения.
В Java \ означает:Я хочу вставить обратную косую черту регулярного выражения, чтобы символы после него имели особое значение.Так, в других языках (таких как Perl) обратной косой черты \ достаточно, чтобы иметь эффект экранирования, в то время как в Java регулярные выражения нуждаются в двух обратных косых чертах, чтобы их можно было интерпретировать как escape-последовательности в других языках. Также легко понять, что в регулярных выражениях Java два \ представляют один \ в других языках, поэтому регулярное выражение, представляющее цифру, имеет вид \d, а обычная обратная косая черта — \.
System.out.print("\"); // 输出为 \
System.out.print("\\"); // 输出为 \
персонаж | иллюстрировать |
---|---|
\ | Отмечает следующий символ как специальный символ, литерал, обратную ссылку или восьмеричное escape-последовательность. Например, n соответствует символу n. \n соответствует новой строке. Последовательность \\ соответствует \ , \( соответствует (. |
^ | Соответствует тому месту, где начинается входная строка. Если установленоRegExpобъектыMultilineсвойство, ^ также будет соответствовать положению после "\n" или "\r". |
$ | Соответствует позиции в конце входной строки. Если установленоRegExpобъектыMultilineсвойство, $ также будет соответствовать положению перед "\n" или "\r". |
* | Соответствует предыдущему символу или подвыражению ноль или более раз. Например, zo* соответствует «z» и «zoo». * эквивалентно {0,}. |
+ | Соответствует предыдущему символу или подвыражению один или несколько раз. Например, «zo+» соответствует «zo» и «zoo», но не «z». + эквивалентно {1,}. |
? | Соответствует предыдущему символу или подвыражению ноль или один раз. Например, «делать(и)?» соответствует «делать» или «делать» в «делает». ? Эквивалентно {0,1}. |
{n} | nявляется неотрицательным целым числом. точное совпадениеnВторосортный. Например, "о{2}" не соответствует "о" в слове "Боб", но соответствует двум "о" в слове "еда". |
{n,} | nявляется неотрицательным целым числом. соответствовать по крайней мереnВторосортный. Например, "o{2,}" не соответствует "o" в "Bob", но соответствует всем "o" в "foooood". «о{1,}» эквивалентно «о+». «о{0,}» эквивалентно «о*». |
{n,m} | m и nявляется неотрицательным целым числом, гдеn <= m. соответствовать по крайней мереnраз, самое большееmВторосортный. Например, "o{1,3}" соответствует первым трем буквам "o" в "fooooood". 'o{0,1}' эквивалентно 'o?'. Примечание. Нельзя вставлять пробелы между запятыми и цифрами. |
? | Когда за этим символом сразу следует любой другой определитель (*, +, ?, {n}, {n,}, {n,m}), соответствующий шаблон является "нежадным". «Нежадный» шаблон соответствует искомой строке как можно короче, в то время как «жадный» шаблон по умолчанию соответствует искомой самой длинной строке. Например, в строке «оооо» «о+?» соответствует только одному «о», а «о+» соответствует всем «о». |
. | Соответствует любому одиночному символу, кроме "\r\n". Чтобы соответствовать любому символу, включая "\r\n", используйте шаблон, такой как "[\s\S]". |
(pattern) | совпадениеpatternи зафиксируйте это совпадающее подвыражение. можно использовать 9Свойство извлекает захваченные совпадения из результирующей коллекции «совпадений». Чтобы соответствовать символу скобки ( ), используйте "(" или ")". |
(?:pattern) | совпадениеpatternно не фиксирует совпавшее подвыражение, т. е. это совпадение без захвата и не сохраняет совпадение для последующего использования. Это для использования с символом "или" ( |
(?=pattern) | Подвыражение, которое выполняет поиск вперед, который соответствуетpatternСтрока начальной точки строки. Это совпадение без захвата, то есть совпадение, которое нельзя захватить для последующего использования. Например, «Windows (?=95 |
(?!pattern) | Подвыражение для выполнения поиска в обратном направлении, сопоставление выражения не соответствуетpatternСтрока поиска начальной точки строки. Это совпадение без захвата, то есть совпадение, которое нельзя захватить для последующего использования. Например, «Windows (?!95 |
x | y |
[xyz] | набор символов. Соответствует любому из содержащихся символов. Например, «[abc]» соответствует «a» в «plain». |
[^xyz] | Обратный набор символов. Соответствует любому не включенному символу. Например, «[^abc]» соответствует «p», «l», «i», «n» в «plain». |
[a-z] | диапазон символов. Соответствует любому символу в указанном диапазоне. Например, «[a-z]» соответствует любой строчной букве в диапазоне от «a» до «z». |
[^a-z] | Символы обратного диапазона. Соответствует любому символу, не входящему в указанный диапазон. Например, «[^a-z]» соответствует любому символу, не входящему в диапазон от «a» до «z». |
\b | Соответствует границе слова, позиции между словом и пробелом. Например, «er\b» соответствует «er» в «never», но не соответствует «er» в «verb». |
\B | Сопоставление границ без слов. «er\B» соответствует «er» в «verb», но не «er» в «never». |
\cx | совпадениеxУказанный управляющий символ. Например, \cM соответствует Control-M или возврату каретки.xЗначение должно быть между AZ или az. Если это не так, предполагается, что c является самим символом "c". |
\d | Числовые символы совпадают. Эквивалент [0-9]. |
\D | Нечисловые символы совпадают. Эквивалент [^0-9]. |
\f | Совпадает фид формы. Эквивалент \x0c и \cL. |
\n | Новая строка соответствует. Эквивалентно \x0a и \cJ. |
\r | Соответствует возврату каретки. Эквивалент \x0d и \cM. |
\s | Соответствует любому пробельному символу, включая пробелы, табуляции, переводы форм и т. д. Эквивалент [ \f\n\r\t\v]. |
\S | соответствует любому непробельному символу. Эквивалентно [^ \f\n\r\t\v]. |
\t | Соответствие вкладок. Эквивалент \x09 и \cI. |
\v | Соответствие вертикальной табуляции. Эквивалентно \x0b и \cK. |
\w | Соответствует любому символу шрифта, включая подчеркивание. Эквивалентно «[A-Za-z0-9_]». |
\W | соответствует любому символу, не являющемуся словом. Эквивалентно "[^A-Za-z0-9_]". |
\xn | совпадениеn, здесьnявляется шестнадцатеричным escape-кодом. Шестнадцатеричный escape-код должен состоять ровно из двух цифр. Например, "\x41" соответствует "A". "\x041" эквивалентно "\x04"&"1". Позволяет использовать коды ASCII в регулярных выражениях. |
*num* | совпадениеnum, здесьnumявляется положительным целым числом. для захвата соответствующей обратной ссылки. Например, "(.)\1" соответствует двум последовательным одинаковым символам. |
*n* | Идентифицирует восьмеричный escape-код или обратную ссылку. Если *n* предшествует по крайней мереnзахватить подвыражения, затемnявляется обратной ссылкой. В противном случае, еслиnвосьмеричное число (0-7), тоnэто восьмеричный escape-код. |
*nm* | Идентифицирует восьмеричный escape-код или обратную ссылку. Если *nm* предшествует по крайней мереnmзахватить подвыражения, затемnmявляется обратной ссылкой. Если *nm* предшествует по крайней мереnзахватывает, тоnявляется обратной ссылкой, за которой следует символm.如果两种前面的情况都不存在,则 *nm* 匹配八进制值 nm,в nи mвосьмеричное число (0-7). |
\nml | когда nвосьмеричное число (0-3),m и lКогда восьмеричное число (0-7), соответствует восьмеричному escape-кодуnml. |
\un | совпадениеn,в nявляется символом Unicode, представленным в виде четырехзначного шестнадцатеричного числа. Например, \u00A9 соответствует символу авторского права (©). |
Примечание. Обратная косая черта в строках исходного кода Java интерпретируется как escape-последовательности Unicode или другие экранированные символы, как того требует Спецификация языка Java. Поэтому в строковых литералах необходимо использовать две обратные косые черты, чтобы указать, что регулярное выражение защищено от интерпретации компилятором байт-кода Java. Например, при интерпретации как регулярное выражение строковый литерал "\b" соответствует одиночному символу возврата, а "\b" соответствует границе слова. Строковый литерал "(hello)" недопустим и приведет к ошибке времени компиляции; для соответствия строке (hello) должен использоваться строковый литерал "\(hello\)".
Домашняя страница автора:Ява Ли ЯнгёнШаблон резюме, учебные материалы, банк вопросов для собеседования, техническая взаимопомощь [Следуй за мной, все для тебя]
Хорошо, давайте сегодня поделимся этим здесь, я Сяо Ао, увидимся в следующем выпуске~~
Обновление статьи о пунше80/ 100 дней