REGEX Python vs C++
Python
Aby zaimportować wyrażenie regularne należy na początku programu wpisać:
"import re"
Korzystanie z regexa odbywa się przy pomocy:
"re.nazwa_funkcji"
C++
Na początku programu wpisujemy:
dla standardu C++0x
"include <regex>"
dla standardu różnego od C++0x
#include <boost/regex.hpp>
należy też użyć przestrzeni nazw
"using namespace std"
Import
Python
C++
Search
match = re.search(pattern, text)
regex_search(text, result, pattern)
Różnica polega na parametrach, w Pythonie wynik wyszukiwania można wrzucić w zmienną, którą następnie można pogrupować funkcją group(). W C++ pattern jest typu regex, a result jest parametrem funkcji i jest typu smatch. Na typie smatch można dokonać grupowania za pomocą funkcji suffix()
Python
C++
Match
match = re.match(pattern, text)
regex_match(text, pattern)
W pythonie match dopasuje tylko na początku tekstu. Użycie funkcji jest bardzo podobne i zwracaną wartością jest wartość boolowska. W C++ można wzbogacić wywołanie funkcji o indeksy początka oraz końca tekstu.
Python
C++
Replace
match = re.sub(pattern, , substitution, text)
regex_replace(text, pattern, substitution)
W pythonie zwraca zmodyfyfikowanego stringa, natomiast w C++ tworzy i zwraca kopię
Przewaga Pythona
Python ma już wiele gotowych i prostych w użyciu funkcji dla wyrażeń regularnych. M.in. są to findall() - które znajdzie wszystkie wystąpienia wzorca, a nie tylko jedno jak to robi search, czy też funkcji group() oraz groups(), które w łatwy sposób dają dostęp do znalezionych elementów. W C++ wiele rzeczy jest jednak na piechotę i aby uzyskać podobny efekt trzeba chociażby używać iteratorów, aby przejść po wynikach grupowania. Python jest bardzo przyjemnym środowiskiem dla wyrażeń regularnych, C++ to nie wybór dla każdego. Sposób implementacji jest bardziej złożony niż ma to miejsce w Pythonie
REGEX Python vs C++
By madjer22
REGEX Python vs C++
- 856