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í:
- Změnit pořadí, aby se delší výraz ověřoval jako první:
JavaScript|Java|C\+\+|C|PHP. - 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++