baguez kallue hartzien python-eri, oingutan texto batetik link-ek html-ra pasa’kuz
#!/usr/bin/env python # -*- coding: utf-8 -*- import re text = "http://aaaaa https://bbbbb ftp://ccccc\n http://dddddddd" m = re.sub(r'(?i)(^|\s+|\A)(http|https|ftp)(\://\S+)(\s+|\Z|$)', '\\1<a href=\"\\1\\2\" onclick=\"window.open(this.href); return false;\">\\2\\3</a>\\4', text) print m
Erantzune:
<a href="http://aaaaa" onclick="window.open(this.href); return false;"> <a href="https://bbbbb" onclick="window.open(this.href); return false;"> <a href="ftp://ccccc" onclick="window.open(this.href); return false;"> <a href="http://dddddddd" onclick="window.open(this.href); return false;">
Badakitz eztala expresiño erregular zehatza, karaktere danak ez dizelako sartzien hor adierazpenan, baie bueno danok dakigu hutsune bat daueniko amaitzuten dala linke edota esaldidxe amaitzuten daniko.
Adierazpenan azalpena:
- r'(?i) -> maiskule eta minuskulen artien EZ bereiztuteko
- (^|\s+|\A) -> textu hasikerie edo hutsune bat edo 1go hizkidxe bada
- (http|https|ftp) -> http EDO https EDO ftp-gaz hasten dizelako linkek
- (\://\S+) -> : \-gaz eskapa bide gero // eta \S+ edozein karaktere EZ dana hutsunie
- (\s+|\Z|$) -> hutsinie edo azkaningoko berbie edo esaldi akabukerie bada
Ordezkapenan azalpena:
- \\1 -ek adierazpenako lehenengo () adierazten dau, hau da: (^|\s+|\A)
- \\2 -ek adierazpenako bigarren () adierazten dau, hau da: (http|https|ftp)
- \\3 -ek adierazpenako hirugarren () adierazten dau, hau da: (\://\S+)(\s+|\Z)
- \\4 -ek adierazpenako laugarren () adierazten dau, hau da: (\s+|\Z)
(^|\s+|\A) sartun’tzat, akabukerakulez bardin hasikeran ein biher dalako :P