zpět k lekci

Najděte programovací jazyky

Existuje mnoho programovacích jazyků, například Java, JavaScript, PHP, C, C++.

Vytvořte regulární výraz, který je najde v řetězci Java JavaScript PHP C++ C:

let rv = /váš RV/g;

alert("Java JavaScript PHP C++ C".match(rv)); // Java JavaScript PHP C++ C

První myšlenka může být vyjmenovat jazyky a vložit mezi ně |.

To však nebude fungovat správně:

let rv = /Java|JavaScript|PHP|C|C\+\+/g;

let řetězec = "Java, JavaScript, PHP, C, C++";

alert( řetězec.match(rv) ); // Java,Java,PHP,C,C

Motor regulárních výrazů hledá alternace jednu po druhé. To znamená, že nejprve ověří, zda máme Java, pokud ne, hledá JavaScript a tak dále.

Výsledkem bude, že JavaScript nemůže být nikdy nalezen prostě proto, že Java se ověřuje jako první.

Totéž platí pro C a C++.

Tento problém má dvě řešení:

  1. Změnit pořadí, aby se delší výraz ověřoval jako první: JavaScript|Java|C\+\+|C|PHP.
  2. Sloučit varianty, které začínají stejně: Java(Script)?|C(\+\+)?|PHP.

V akci:

let rv = /Java(Script)?|C(\+\+)?|PHP/g;

let řetězec = "Java, JavaScript, PHP, C, C++";

alert( řetězec.match(rv) ); // Java,JavaScript,PHP,C,C++