⊗pyPmRELAB 72 of 129 menu

Python тұрақты өрнектеріндегі позитивті және негативті іздеу

Кейде мынадай есепті шешу керек болады: 'aaa' жолын тауып, оны '!'-ге алмастыру, бірақ тек егер 'aaa'-тен кейін 'x' тұрса ғана, ал 'x'-тің өзін алмастырмау. Егер біз есепті 'бас үйлесін' шешуге тырыссак, онда ештеңе шықпайды:

txt = 'aaax baaa' res = re.sub('aaax', '!', txt) print(res) # шығарады '! baaa', біз '!x baaa' деп қаладық

Алға қарай іздеу

Есепті шешу үшін 'x'-ті алмастыруға болмайды деп айтудың тәсілі қажет. Бұл (?= ) арнайы жақшалары арқылы жасалады, олар тек қарап қана қояды, бірақ өздерімен бірге алмайды.

Бұл жақшалар позитивті алға қарай іздеу деп аталады. Позитивті - себебі 'x' (біздің жағдайда) болуы керек - сонда ғана алмастыру орындалады.

Енді біздің есепті шешу үшін осы жақшаларды қолданайық:

txt = 'aaax baaa' res = re.sub('aaa(?=x)', '!', txt) print(res) # шығарады '!x baaa'

Сондай-ақ негативті алға қарай іздеу бар - (?! ) - ол, керісінше, бір нәрсенің болмауы керек екенін білдіреді. Келесі мысалда алмастыру тек 'aaa'-тен кейін 'x' ЕМЕС тұрғанда ғана орындалады:

txt = 'aaax aaab' res = re.sub('aaa(?!x)', '!', txt) print(res) # шығарады 'aaax !b'

Артқа қарай іздеу

Сол сияқты позитивті артқа қарай іздеу бар - (?<= ). Келесі мысалда алмастыру тек 'aaa'-тің алдында 'x' тұрғанда ғана орындалады:

txt = 'xaaa' res = re.sub('(?<=x)aaa', '!', txt) print(res) # шығарады 'x!'

Сондай-ақ негативті артқа қарай іздеу бар - (?<! ). Келесі мысалда алмастыру тек 'aaa'-тің алдында 'x' тұрмағанда ғана орындалады:

txt = 'baaa' res = re.sub('(?<!x)aaa', '!', txt) print(res) # шығарады 'b!'

Практикалық есептер

Функция атауларын қамтитын жол берілген:

txt = 'func1() func2() func3()'

Жолдан функция атауларының массивін алыңыз.

Тегі бар жол берілген:

txt = '<a href="" class="eee" id="zzz">'

Осы тегтің атрибут атауларының массивін алыңыз.

Айнымалылар бар жол берілген:

txt = '$aaa $bbb $ccc xxxx'

Алдында доллар белгісі тұрған ішкі жолдарды алыңыз.

Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау