JavaRush /Блоги Java /Random-TG /Ифодаҳои муқаррарӣ дар Java
terranum
Сатҳи
Milan

Ифодаҳои муқаррарӣ дар Java

Дар гурӯҳ нашр шудааст
RegExИфодаи муқаррарӣ як навъ намунаест, ки метавонад ба матн татбиқ карда шавад (String, дар Java). Java бастаи java.util.regex- ро барои мувофиқ кардани ифодаҳои муқаррарӣ таъмин мекунад. Ифодаҳои муқаррарӣ ба забони барномасозии Perl хеле монанданд ва омӯхтан хеле осон аст. Ифодаи муқаррарӣ ё ба матн (қисми он) мувофиқат мекунад ё не. * Агар ифодаи муқаррарӣ ба порчаи матн мувофиқат кунад, мо метавонем онро пайдо кунем. ** Агар ибораи муқаррарӣ мураккаб бошад, мо метавонем ба осонӣ муайян кунем, ки кадом қисми ибораи муқаррарӣ ба кадом қисми матн мувофиқат мекунад.

Аввалин мисол

Ифодаи муқаррарии " [a-z] +" ба ҳама ҳарфҳои хурди матн мувофиқат мекунад. [a-z]маънои ҳама гуна аломатро аз aфарогир zва +маънои "як ё якчанд" аломатро дорад. Фарз мекунем, ки мо сатри "code 2 learn java" -ро пешниҳод мекунем. Инро дар Java чӣ гуна бояд кард Аввал, шумо бояд як қолаб эҷод кунед:
import java.util.regex.*;
Pattern p = Pattern.compile([a-z]+);
Минбаъд шумо бояд matcherбо фиристодани паём дар диаграмма барои матн эҷод кунед:
Matcher m = p.matcher(“code 2 learn java tutorial”);
ЭЗОҲ: На конструкторҳо надоранд Pattern, Matcherмо онҳоро бо истифода аз усулҳои синф эҷод мекунем Pattern. Pattern Class:Объекти синф ифодаи ифодаи муқаррариро ташкил медиҳад. Синфи Pattern ягон конструктори оммавиро таъмин намекунад. Барои сохтани қолаб, шумо бояд аввал ба яке аз усулҳои статикии оммавӣ занг занед, ки баъдан an objectи синфро бармегардонад Pattern. Ин усулҳо ҳамчун далел ифодаи муқаррариро мегиранд. Matcher Class:Объекти Finder муҳаррикест, ки намунаро тафсир мекунад ва амалиёти мувофиқро дар сатри воридот иҷро мекунад. Мисли Patternсинф, Matcherон конструкторҳои ҷамъиятӣ надорад. Шумо an objectро Matcherтавассути даъват кардани метод matcherдар an objectи синф ба даст меоред Pattern. Пас аз он ки мо ин қадамҳоро анҷом додем ва ҳоло мо як мисоли синф дорем Matcher m , мо метавонем тафтиш кунем, ки намуна пайдо шудааст ё не ва агар ин тавр бошад, дар кадом мавқеъ ва ғайра. m.matches()Агар намуна ба тамоми сатр мувофиқат кунад true, дар акси ҳол нодуруст бармегардад. m.lookingAt()Агар намуна ба аввали сатр мувофиқат кунад true, дар акси ҳол нодуруст бармегардад. m.find ()ҳақиқӣ бармегардонад, агар намуна ба ягон қисми матн мувофиқат кунад.

Ҷустуҷӯи мувофиқат

Пас аз мувофиқати бомуваффақият, m.start() индекси аломати якуми мувофиқро бармегардонад ва m.end() индекси аломати охирини мувофиқро бар иловаи як бар мегардонад. Агар кӯшиши бемуваффақият анҷом дода шавад ва ҳеҷ гуна мувофиқат пайдо нашавад, m.start()онҳо m.end()мепартояндIllegalStateException
  • Ин аст RuntimeException, ки ба шумо лозим нест, ки онро сайд кунед.
Баргардонидани индекси аломати охирини мувофиқ ба иловаи як метавонад аҷиб ба назар расад m.end(), аммо ин маҳз ҳамон чизест, ки аксари String.
  • Барои намуна,“Now is the time“.substring(m.start(), m.end())
ҳамон сатрро бармегардонад. Биёед codeро бубинем:
import java.util.regex.*;

public class RegexTest {
    public static void main(String args[]) {
        String pattern = "[a-z]+";
        String text = "code 2 learn java tutorial";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        while(m.find()) {
            System.out.print(text.substring(m.start(), m.end()) + "*");
        }
    }
}
Output: code*learn*java*tutorial*

Усулҳои иловагӣ

Агар мувофиқат вуҷуд дошта бошад, пас:
  • m.replaceFirst(replacement)сатри навро бармегардонад, ки дар он зерсатри аввал, ки ба намуна мувофиқат мекунад, иваз карда мешавадreplacement
  • m.replaceAll(replacement)сатри навро бармегардонад, ки дар он ҳар як зерсатри ба намуна мувофиқат карда мешавад
  • m.find(StartIndex)пайдо кардани бозии навбатии сар аз шохиси муайян
  • m.reset()шаблонро аз нав танзим мекунад
  • m.reset(NewText)ҷустуҷӯкунандаро аз нав танзим мекунад ва ба он матни нав медиҳад (шояд String, StringBufferё CharBuffer)

Синтаксиси ифодаи муқаррарӣ

  • ^Ба аввали сатр мувофиқат мекунад.
  • $Ба охири сатр мувофиқат мекунад.
  • .Ба ҳар як аломати ягона, ба истиснои сатри нав мувофиқат мекунад. Истифодаи опсияи m имкон медиҳад, ки он ба сатри нав мувофиқат кунад.
  • [...]Ба ҳар як аломати ягона дар қавс мувофиқат мекунад.
  • [^ ...]Ба ҳар як аломати ягона мувофиқат мекунад, ки дар қавс нест.
  • \AТамоми хатро оғоз кунед.
  • \zОхири тамоми сатр.
  • \ZОхири тамоми сатр ба истиснои терминатори сатри ниҳоӣ.
  • re*Ба 0 ё зиёда ҳодисаҳои ифодаи қаблӣ мувофиқат мекунад.
  • re+Як ё якчанд мувофиқати ифодаи қаблӣ.
  • re?0 ё 1 ба ҷойгиршавии ифодаи қаблӣ мувофиқат мекунад.
  • re{n}Ба таври дақиқ мувофиқат мекунад N Шумораи такрори ифодаи қаблӣ.
  • re{n,}Ба N ё зиёда ҳодисаҳои ифодаи қаблӣ мувофиқат мекунад.
  • re{n, m}Ҳадди ақал n ва бештари m пайдоиши ифодаи қаблӣ мувофиқат мекунад.
  • a|bМутобиқати a ё b.
  • (re)Гурӯҳи ибораҳои муқаррарӣ ва дар хотир нигоҳ доштани матни ёфтшуда.
  • (?: re)Гурӯҳҳои ибораҳои муқаррарӣ, ки матни ёфтшударо дар хотир надоранд.
  • (?> re)Ба намунаи мустақил бидуни бозгашт мувофиқат мекунад.
  • \wҲарфҳо ва рақамҳоро мувофиқат мекунад [a-zA-Z_0-9].
  • \WИнҳо ҳарфҳо ё рақамҳо нестанд.
  • \sҶойҳои мувофиқ. Муодor [\t\n\r\f].
  • \SНа аломатҳои фосила.
  • \dБа рақамҳо мувофиқат мекунад. Ба [0-9] баробар аст.
  • \DБа рақамҳо мувофиқат намекунад.
  • \GБа нуқтаи бозии охирин мувофиқат мекунад.
  • \nМутобиқати хати нав.
  • \bДар сарҳади калима мувофиқат мекунад.
  • \BДар сарҳади калима мувофиқат намекунад.
  • \n, \t, etc.Аломатҳои сатри нав, баргардонидани вагон, ҷадвал ва ғайра.
  • \QҲама аломатҳоро пеш аз \E иқтибос кунед.
  • \EИқтибос бо \Q оғоз шуда, ба охир мерасад.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION