StrExpression regex: Porovnání verzí
| (Není zobrazeno 11 mezilehlých verzí od stejného uživatele.) | |||
| Řádek 1: | Řádek 1: | ||
Práce s regex v příkazu StrExpression má určitá specifika. | Práce s regex v příkazu StrExpression má určitá specifika. | ||
| + | |||
| + | Vychází ze standardní C++ knihovny, viz. https://en.cppreference.com/w/cpp/regex.html | ||
---- | ---- | ||
| Řádek 18: | Řádek 20: | ||
</code> | </code> | ||
</blockquote> | </blockquote> | ||
| + | |||
| + | == 2. Další specifika == | ||
| + | |||
| + | <code>\s</code> nezahrnuje znaky pro konec řádku | ||
| + | |||
| + | <code>.</code> zahrnuje i znaky pro konec řádku (tzv. "DOTALL", nebo "single line" flag) | ||
| + | |||
| + | <code>Error: 125: Invalid expression</code> příkazu StrExpression nemusí nutně znamenat, že máme chybu v samotném výrazu. Chyba se může ukázat i v případě, kdy používáme zachytávací skupiny (capture groups), zatímco jsme v textu nenalezli hledaný řetězec. Jedná se o technické omezení na výstupu příkazu, ale nejde o bug. Pro zamezení nechtěného pádu testu vložte příkaz StrExpression do příkazu Try, nebo nejprve hledaný řetězec vyhledejte bez zachytávací skupiny a potom, za pomocí příkazu If, přistupte k samotnému získání řetězce v prohledávaném textu. | ||
Aktuální verze z 28. 8. 2025, 17:38
Práce s regex v příkazu StrExpression má určitá specifika.
Vychází ze standardní C++ knihovny, viz. https://en.cppreference.com/w/cpp/regex.html
1. Escape sekvence
1.1. "\r" a "\n" sekvence
Pokud si přejeme v regex výrazu použít escape sekvence pro carriage return a line feed, je třeba použít dvojité zpětné lomítko takto:
\\r
\\n
2. Další specifika
\s nezahrnuje znaky pro konec řádku
. zahrnuje i znaky pro konec řádku (tzv. "DOTALL", nebo "single line" flag)
Error: 125: Invalid expression příkazu StrExpression nemusí nutně znamenat, že máme chybu v samotném výrazu. Chyba se může ukázat i v případě, kdy používáme zachytávací skupiny (capture groups), zatímco jsme v textu nenalezli hledaný řetězec. Jedná se o technické omezení na výstupu příkazu, ale nejde o bug. Pro zamezení nechtěného pádu testu vložte příkaz StrExpression do příkazu Try, nebo nejprve hledaný řetězec vyhledejte bez zachytávací skupiny a potom, za pomocí příkazu If, přistupte k samotnému získání řetězce v prohledávaném textu.