# சுருங்குறித் தொடர்

## தொடரியல்

### POSIX

#### POSIX அடிப்படை சுருங்குறித் தொடர்கள்

மரபுசார் Unix சுருங்குறித் தொடர் தொடரியலானது, பொதுவான மரபையே பின்பற்றியது, ஆனால் அது கருவிக்குக் கருவி மாறுபட்டது. IEEE POSIX அடிப்படை சுருங்குறித் தொடர்கள் (BRE) தரநிலையானது (நீட்டிக்கப்பட்ட சுருங்குறித் தொடர்கள் அல்லது ERE என்ற மாற்று வகைப்பதிப்புடன் வெளியிடப்பட்டது) மரபுசார் (எளிய சுருங்குறித் தொடர்) தொடரியலுக்கான பின்னோக்கிய இணக்கத்தன்மையைக் கருத்தில் கொண்டே உருவாக்கப்பட்டது, ஆனால் அது ஒரு பொதுவான தரநிலையை வழங்கியது, அப்போதிலிருந்து அதுவே பல Unix சுருங்குறித் தொடர் கருவிகளில் இயல்பான தொடரியலாகப் பின்பற்றப்பட்டது, இருப்பினும் அவற்றில் ஆங்காங்கே சில சிறு மாற்றங்கள் அல்லது கூடுதல் அம்சங்கள் இருந்தன. அது போன்ற கருவிகள் பல, கட்டளை வரி மதிப்புருக்களுடனான ERE தொடரியல் ஆதரவையும் வழங்கின.  
BRE தொடரியலில், பெரும்பாலான எழுத்துக்குறிகள் குறிப்பெழுத்துகளாகவே கருதப்படுகின்றன — அவை அவற்றுக்கு மட்டுமே பொருந்தும் (அதாவது, <code>a</code> என்பது "*a* " க்கு மட்டுமே பொருந்தும்). கீழே பட்டியலிடப்பட்டுள்ள எதிர்பார்ப்புகள் மெட்டா எழுத்துக்குறிகள் அல்லது மெட்டா தொடர்கள் எனப்படுகின்றன.  
| மெட்டா எழுத்துக்குறி | விளக்கம்: |
| --- | --- |
| <code>.</code> | இது எந்த ஒற்றை எழுத்துக்குறியுடனும் பொருந்தும் (பல பயன்பாடுகள் நியூலைன்களைப் புறக்கணித்துவிடுகின்றன, மேலும் எந்த எழுத்துக்குறிகள் நியூலைன் எழுத்துக்குறியாகக் கருதப்படுகின்றன என்பது உணர்வு, எழுத்துக்குறி குறியாக்கம் மற்றும் பணித்தளம் சார்ந்தது, ஆனால் லைன் ஃபீட் எழுத்துக்குறி இதில் சேர்க்கப்பட்டிருப்பது பாதுகாப்பானதாகும்). POSIX அடைப்புக்குறிக் குறிப்புத்தொடர்களில், புள்ளி எழுத்துக்குறியானது ஒரு வழக்கமான புள்ளிக்குப் பொருந்துகிறது. எடுத்துக்காட்டுக்கு, <code>a.c</code> என்பது "*abc* ", போன்றவற்றுக்குப் பொருந்தும் ஆனால் <code>[a.c]</code> என்பது "*a* ", "*.* " அல்லது "*c* " க்கு மட்டுமே பொருந்தும். |
| <code>[&nbsp;]</code> | இது ஒரு அடைப்புக்குறிக் குறிப்புத்தொடராகும். அடைப்புக்குறிக்குள் இருக்கும் ஒற்றை எழுத்துக்குறிக்குப் பொருந்தும். எடுத்துக்காட்டுக்கு, <code>[abc]</code> என்பது "*a* ", "*b* " அல்லது "*c* " க்குப் பொருந்தும். <code>[a-z]</code> என்பது "*a* " முதல் "*z* " வரையிலுள்ள எந்த ஒரு சிற்றெழுத்துக்கும் பொருந்தும் வரம்பைக் குறிப்பிடுகிறது. இந்த வடிவங்கள் கலந்து பயன்படுத்த முடியும்: <code>[abcx-z]</code> என்பது <code>[a-cx-z]</code> ஐப் போலவே "*a* ", "*b* ", "*c* ", "*x* ", "*y* " அல்லது "*z* " க்குப் பொருந்தும்.<code>-</code> எழுத்துக்குறியானது ஒரு அடைப்புக்குறிக்குள் முதல் அல்லது கடைசி எழுத்துக்குறியாக இருக்கும்பட்சத்தில் அல்லது பின்சாய்வுக்கோடு மூலம் தவிர்க்கப்பட்டிருந்தால் அது ஒரு குறிப்புமுறை எழுத்துக்குறியாகக் கருதப்படுகிறது: <code>[abc-]</code>, <code>[-abc]</code>, அல்லது <code>[a\-bc]</code>. |
| <code>[^&nbsp;]</code> | இது அடைப்புக்குறிக்குள் இல்லாத ஓர் ஒற்றை எழுத்துக்குறிக்குப் பொருந்துகிறது. எடுத்துக்காட்டுக்கு, <code>[^abc]</code> என்பது "*a* ", "*b* " அல்லது "*c* " அல்லாத எழுத்துக்குறி எந்த எழுத்துக்குறிக்கும் பொருந்துகிறது. <code>[^a-z]</code> என்பது "*a* " முதல் "*z* " வரையில் உள்ள சிற்றெழுத்தல்லாத எந்த ஒரு எழுத்துக்குறிக்கும் பொருந்துகிறது. மேலே உள்ளது போலவே, குறிப்புமுறை எழுத்துக்குறிகளும் வரம்புகளும் கலந்து பயன்படுத்தப்படலாம். |
| <code>^</code> | இது சரத்தின் தொடக்க நிலைக்குப் பொருந்தும். இது வரி-அடிப்படையிலான கருவிகளில், எந்த ஒரு வரியின் தொடக்க நிலைக்கும் பொருந்துகிறது. |
| <code>$</code> | இது ஒரு சரத்தின் முடிவு நிலைக்குப் பொருந்துகிறது அல்லது ஒரு சரத்தின் புதிய வரியில் முடிவதற்கு சற்று முன்னதான நிலைக்குப் பொருந்துகிறது. இது வரி-அடிப்படையிலான கருவிகளில், எந்த ஒரு வரியின் முடிவு நிலைக்கும் பொருந்துகிறது. |
| ஒரு குறிக்கப்பட்ட துணைக் குறிப்புத் தொடரை வரையறுக்கிறது. ஒரு பருந்தடைப்புக்குள் உள்ள சரமானது பின்னர் எப்போதும் மீண்டும் பயன்பாட்டுக்கு அழைக்கப்படலாம் (அடுத்த உள்ளீட்டைக் காண்க, <code>\*n* </code>). ஒரு குறிக்கப்பட்ட துணைக் குறிப்புத் தொடரானது ஒரு தொகுப்பு அல்லது ஒரு பற்றுக் குழு எனவும் அழைக்கப்படுகிறது. |  |
| <code>\*n* </code> | எது *n* வது குறிக்கப்பட்ட துணைக் குறிப்புத் தொடருக்கு எது பொருந்துகிறதோ அதற்கு இது பொருந்துகிறது, இதில் *n* என்பது 1 முதல் 9 வரையிலுள்ள எண்ணாகும். இந்தக் கட்டமைப்பானது கோட்பாட்டினடிப்படையில் **ஒழுங்கற்றதாகும்** , மேலும் POSIX ERE தொடரியலிலும் பின்பற்றப்படவில்லை. சில கருவிகள் ஒன்பதுக்கும் மேற்பட்ட பற்றுக் குழுக்களைக் குறிப்பிடுவதற்கு அனுமதிக்கின்றன. |
| <code>* </code> | முன்னதாக உள்ள கூறுக்கு பூச்சியம் அல்லது மேற்பட்ட முறை பொருந்துகிறது. எடுத்துக்காட்டுக்கு, <code>ab* c</code> என்பது "*ac* ", "*abc* ", "*abbbc* ", போன்றவற்றுக்குப் பொருந்துகிறது. <code>[xyz]* </code> என்பது "", "*x* ", "*y* ", "*z* ", "*zx* ", "*zyx* ", "*xyzzy* ", இன்னும் பலவற்றுக்குப் பொருந்துகிறது. <code>\(ab\)* </code> என்பது "", "*ab* ", "*abab* ", "*ababab* ", போன்ற பலவற்றுக்குப் பொருந்துகிறது. |
| முன்னதாக உள்ள கூறுக்கு குறைந்தபட்சம் *m* முறையும் *n* க்கு மிகாத முறையும் பொருந்துகிறது. எடுத்துக்காட்டுக்கு, <code>a\{3,5\}</code> என்பது "*aaa* ", "*aaaa* " மற்றும் "*aaaaa* " ஆகியவற்றுக்கு மட்டுமே பொருந்தும். இந்த அம்சம் சுருங்குறித் தொடர்களின் பழைய பதிப்புகளில் இருந்ததில்லை. | } |  
**எடுத்துகாட்டுகள்**  
- <code>.at</code> என்பது "at" என்று முடியும் ஏதேனும் மூன்று-எழுத்துக்குறி சரத்திற்குப் பொருந்தும் , இதில் "*hat* ", "*cat* " மற்றும் "*bat* " ஆகியவை அடங்கும்.
- <code>[hc]at</code> என்பது "*hat* " மற்றும் "*cat* " க்குப் பொருந்தும்.
- <code>[^b]at</code> என்பது "*bat* " நீங்கலாக <code>.at</code> மூலம் பொருந்தும் அனைத்து சரங்களுக்கும் பொருந்தும்.
- <code>^[hc]at</code> என்பது "*hat* " மற்றும் "*cat* " க்குப் பொருந்தும், ஆனால் சரம் அல்லது வரியின் தொடக்கத்தில் மட்டுமே.
- <code>[hc]at$</code> என்பது "*hat* " மற்றும் "*cat* " க்குப் பொருந்தும், ஆனால் சரம் அல்லது வரியின் முடிவில் மட்டுமே.