Күрделі регрессия - бұл мүмкін бе?

Келесі жолдар үшін, егер жолда негізгі жол бар болса немесе «mainline» болмаса, соңында нөмір болса, «mainline» үзіндісін шығаруға тырысамын. Java пайдаланамын.

Мысалы, келесі жолдар үшін тек қана соңындағы сандарды алғым келеді

Solaris10NBngp-bwm1.1.X    //want 1.1.x
Solaris10NBbytel2.0.0.0x   //want 2.0.0.0x
Solaris10NBbwm1.2.X        //want 1.2.X
Solaris10NBoam_bwm1.4.0.X  //want 1.4.0X
Solaris10NBoam1.7.X        //want 1.7.X

Mainline мысалдары:

Solaris10NBngp-bwm_mainline//want mainline
LinuxNBdaypass_mainline    //want mainline
LinuxNBngp_mainline        //want mainline

Бұл regex көмегімен мүмкін бе, және солай болса, оны қалай істейтінін кім біледі? :-)

0

5 жауаптар

Solaris10NBngp-bwm1.1.X    //want 1.1.x 
Solaris10NBbytel2.0.0.0x   //want 2.0.0.0x 
Solaris10NBbwm1.2.X        //want 1.2.X 
Solaris10NBoam_bwm1.4.0.X  //want 1.4.0X 
Solaris10NBoam1.7.X        //want 1.7.X

Жоғарыда келтірілген кірістер үшін,

expectedString = yourString.replaceAll("[^.]+(\\d+\\.)","$1");
2
қосылды
Спасибо, бұл сценарий жасады, мен жай ғана мағынасын тексеру үшін if операторын қолдана отырып, және бұл мақалада басқа слайдтар үшін мақалада жоқ - көп рахмет.
қосылды автор Rory, көзі

Егер жолдар әрдайым Solaris10NB арқылы басталса, мына өрнек көріңіз: Solaris10NB [\ w \ -] + (\ d. *) .

Содан кейін бірінші топты Matcher # group (1) арқылы шығарып алыңыз.

0
қосылды
ОС-ның бірінші абзацына қайтадан қараңыз.
қосылды автор T.J. Crowder, көзі

Бұл тұрақты өрнек көріңіз

([0-9.]+x) +.*$

NB Ескертулерді ескере отырып, жолдың бөлігі

Әйтпесе

[0-9.]+x)$
0
қосылды
Бірінші өрнек «... x», екіншісі «... x» дегенге сәйкес келеді. Бұл сұрақта қажет болған сияқты емес.
қосылды автор Alexey, көзі

Мына тізімді қолданыңыз:

/(mainline)$|(\d+\..*)\s*/

Егер ол mainline жолдың соңында табылса $ 1 айнымалы мәні mainline мәнін қамтиды. Егер нұсқаның нөмірін тапса, онда $ 2 айнымалы толтырылады, ол $ 1 бос болады.

0
қосылды

Бұл өрнек жұмыс істейтінін көріңіз

(\d\.)+\d?X$
0
қосылды