ПредишенСледващото

Регулярни изрази в Java

Регулярните изрази в Ява

А изразът е един вид шаблон, който може да се прилага към текста (String, в Java). Java осигурява java.util.regex пакет за съвпадение с регулярни изрази. Регулярните изрази са много подобни на езика за програмиране Perl и е много лесно да се учи.
Регулярните изрази, или отговаря на текста, (част от нея), или не.
* Ако регулярния израз съвпада с част от текста, можем да намерим ее.
** Ако регулярния израз е композитен, ние можем лесно да разберете каква част от регулярния израз съвпада с всяка част от текста.

Първият пример
Редовна израз "[A-Z] +" съответства на всички strochnyem букви в текста.
[A-Z] означава всеки символ от А до Z, включително и + означава "един или повече" символи.

Да предположим, че ние доставяме линия «код 2 научат Java урока».

Как да го направя в Java

На първо място, трябва да се направи шаблон:

На следващо място, трябва да се създаде за съотнасяне на текст, изпращане на съобщение до схемата:


ЗАБЕЛЕЖКА:
Нито Модела Matcher или имат дизайнери, ние създаваме ги използват методите на Модела клас.

Модела Клас: Обектът клас е представителство на регулярния израз. Модела клас не предоставя обществени конструктори. За създаване на шаблон, първо трябва да се обадите на някой от обществените статични методи, които връщат обект след Модела клас. Тези методи вземат регулярен израз като аргумент.

Matcher клас: Обект "Търсач" е двигателят, който интерпретира модела и извършва сравнение с входния низ. Подобно клас Модела, Matcher Няма публични конструктори. Можете да получите Matcher обект, като се обадите за съотнасяне. Модела на обект клас.

След като изпълните тези стъпки, и сега имаме инстанция на клас Matcher м. и сега можем да се тества модел е установено, или не, и ако е така, в какво положение и т.н.

m.matches () Връща TRUE, ако моделът съответства на целия низ, в противен случай невярно.
m.lookingAt () връща истина, ако шаблонът съответства на най-горния ред, а фалшивата друго.
m.find () връща истина, ако моделът съответства на всяка част от текста.

След успешното sopostovleniya, m.start () връща индекса на първия знак съответства и m.end () връща индекса на последния знак съвпадащи, плюс един.

Ако не е направен неуспешен опит и не се намери съответствие, m.start () и m.end () ще хвърлят IllegalStateException
- Това е RuntimeException, така че не е нужно да го хване.

Може да изглежда странно, че m.end () връща индекса на последния знак съвпадащи, плюс един, но това е точно това, което се изисква за повечето от методите на String класа.
- Например, "Сега е времето" .substring (m.start (), m.end ())
ще се върне на същия низ.

Обърнете внимание на кода:

Ако има съвпадение, а след това

- m.replaceFirst (подмяна) връща нов низ, в който първият поднизът съчетана с модела ще бъде заменен от подмяна
- m.replaceAll (подмяна) връща нов низ, където всеки подниз, който съвпада с модела да бъдат заменени
- m.find (StartIndex) намерите на следния ред, като се започне в определеното индекса
- m.reset () нулира шаблона
- m.reset (NewText) нулира търсещия, и му дава нов текст (може да бъде String, StringBuffer или CharBuffer)

Регулярният израз синтаксис

^ На срещата в началото на линията.
$ Мачове до края на линията.
. Съвпадение с всеки отделен символ, освен нов ред. Използване на опция м позволява да отговарят на новата линия.
[. ] Съвпадение с всеки отделен герой в скоби.
[^. ] Съвпадение с всеки отделен характер не са в скобите.
\ A започне цял ред.
\ Z Краят на целия низ.
\ Z Край на всички линии, с изключение на крайния край на реда.
Re * мачове 0 или повече случаи на предходната експресията.
Re + един или повече случаи на предходната експресията.
отново? Мачове 0 или 1 от предишния модел на изразяване.
Re срещи точно N Брой случаи на предходната експресията.
Re съответния N или повече появи на предходната експресията.
Re мачове поне, п и m в повечето случаи на предходната експресията.
а | б съвпада с или б.
(пре) Група регулярни изрази и спомняйки си намерения текст.
(. Re) Групи регулярни изрази, без да си спомни съответстващият текст.
(?> Re) Мачове независим модел без връщане назад.
\ W отговаря на писмото.
\ W мачове не-алфа знаци.
\ S съвпада с интервал. Еквивалентно [\ т \ п \ г \ г].
\ S не е празно.
\ D съвпада с цифри. Еквивалентно на [0-9].
\ D съвпада с цифра.
\ G мачове точка на последния мач.
\ N мачове на нов ред.
\ B мачове на границата дума.
\ B мачове не са на границата дума.
\ N, \ т и т.н. нови договорени знаци, знаци за нов ред, разделите и т.н.
\ Q цитат всички знаците преди \ Е.
\ E Завършва кавички започна с \ Q.

Господи, моля помогнете. Опитвам се да пиша регулярен израз, за ​​да вмъкнете след оттеглянето на две линии на друг ред.
Аз се опитвам да създаване на шаблона, както следва:

Изглежда, че не ми е ясно принципа. Чета, чета, и някак си не се забави. Тя трябва да е от техния специфичен примери сделка. Poke носа си, моля, да ми пише.
Благодаря.
Написах в края на краищата по този начин, но това е някаква патерица ...

Свързани статии

Подкрепете проекта - споделете линка, благодаря!