JavaScript හි රෙගුලාසි තුළ ගැබ් වැඩ කිරීම
ගැබ් වල අන්තර්ගතය ආදේශන වාක්ය ඛණ්ඩයේ පමණක් නොව, රෙගුලාසිය තුළම පවතී: අපට යමක් ගැබක තබා, පසුව රෙගුලාසිය තුළම කියවිය හැක්කේ මෙම ස්ථානයේ එම ගැබේ අන්තර්ගතය තිබිය යුතු බවයි.
ගැබ් වල අන්තර්ගතය ඒවායේ අංක මගින් ප්රවේශ විය හැකි අතර, ඒවාට පෙර ප්රතිලෝම ආනත රේඛාවක් (backslash) ඇත. උදාහරණයක් ලෙස,
පළමු ගැබ මෙසේ ප්රවේශ විය හැකිය: \1,
දෙවන ගැබ මෙසේ - \2, තෙවන
- \3 සහ එලෙසම.
ඉහත ලියා ඇති සියල්ල ඔබට දැනට ඉතා වළාකුළු සහිත බව මම විශ්වාස කරමි. මෙය අළුතක් නොවේ, මක්නිසාද ගැබ් යනු රෙගුලාසි වල වඩාත් අවබෝධයට අපහසු ස්ථානයයි. අපි උදාහරණ මගින් තේරුම් ගනිමු.
උදාහරණය
අපට මෙවැනි වාක්ය ඛණ්ඩයක් ඇතැයි සිතමු:
let str = 'aa bb cd ef';
අපි එහි අකුරු දෙකක් එකින් එක අනුපිළිවෙලට ඇති සියලුම ස්ථාන සොයා ගනිමු. ගැටළුව විසඳීම සඳහා ඕනෑම අකුරක් සොයා, එය ගැබකට තබා, පසුව පරීක්ෂා කරන්න ඊළඟ සංකේතය එම ගැබේ අන්තර්ගතය ද යනුවෙන්:
let res = str.replace(/([a-z])\1/g, '!');
එහි ප්රතිඵලයක් ලෙස විචල්යයට පහත දේ ලියා ඇත:
'! ! cd ef'
උදාහරණය
අපට මෙවැනි වාක්ය ඛණ්ඩයක් ඇතැයි සිතමු:
let str = 'asxca buzxb csgd';
අපි එහි පළමු සහ අවසාන අකුරු සමාන වන සියලුම වචන සොයා ගනිමු. විසඳුම සඳහා පහත රටාව ලියමු: අකුර, ඊට පසුව තවත් එකක් හෝ වැඩි ගණනක් අකුරු, ඉන් පසු පළමු අකුරම:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
එහි ප්රතිඵලයක් ලෙස විචල්යයට පහත දේ ලියා ඇත:
'! ! csgd'
ප්රායෝගික ගැටළු
වාක්ය ඛණ්ඩයක් ලබා දී ඇත:
let str = 'aaa bbb ccc xyz';
අකුරු තුනක් එකින් එක අනුපිළිවෙලට ඇති සියලුම උප වාක්ය ඛණ්ඩ සොයා ගන්න.
වාක්ය ඛණ්ඩයක් ලබා දී ඇත:
let str = 'a aa aaa aaaa aaaaa';
එකම අකුරු දෙකක් හෝ වැඩි ගණනක් එකින් එක අනුපිළිවෙලට ඇති සියලුම උප වාක්ය ඛණ්ඩ සොයා ගන්න.
වාක්ය ඛණ්ඩයක් ලබා දී ඇත:
let str = 'aaa aaa bbb bbb ccc ddd';
එකම වචන දෙකක් එකින් එක අනුපිළිවෙලට ඇති සියලුම උප වාක්ය ඛණ්ඩ සොයා ගන්න.