StrExpression regex: Porovnání verzí

Z Wiki
Přejít na: navigace, hledání
(Založena nová stránka s textem „test“)
 
 
(Není zobrazeno 12 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
test
+
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:
 +
 
 +
<blockquote>
 +
<code>
 +
\\r
 +
</code>
 +
 
 +
<code>
 +
\\n
 +
</code>
 +
</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.