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