بله دقیقا. ببین فکر کنم اگه اول تو رو با عبارات منظم آشنا کنم بد نیست و میتونه کمک حالت باشه.
(k)+(h)+(o)+(b)+(i){cout<<"Khobi";}
این یه عبارت منظمه که میگه اول K بیاد اون علامت + مشخص میکنه که این کاراکتر h یک یا بیشتر بار میتونه تکرار بشه. بعد h هم به همین ترتیب یعنی اصل کاریه اون علامت +ه. و الی آخر
پس اگه بین o و b یه o دیگه اضافه کنی یعنی بعد o اول حتما باید یه o دیگه هم بیاد.
در نهایت اگه اون عبارت منظم با رشته ی ورودی مطابقت کرد اونوقت دستور Cout<<"Khobi" اجرا میشه.
ببین با عبارات منظم میشه هر رشته ای که مد نظرت هست رو تولید کنی.
علاوه بر علامت + که معنی حداقل یک میده علامتهای دیگه ای هم داریم که معانی مختلفی میده. مثلا اگه بعد از یه کاراکتر علامت * بزاری یعنی اینکه اون کاراکتر میتونه اصلا تو رشته ی ورودی وجود نداشته باشه یا به تعداد بینهایت بار تکرار بشه. یا علامت ? یعنی وجود اون کاراکتر اخیاریه یعنی هم میتونه نیاد و اگر هم میاد به تعداد یکبار بیاد و ...
هرجا که نوشتم کاراکتر میتونه بجاش رشته هم قرار بدی مثلا
(ID)*23
این عبارت با رشته های زیر مطابقت میکنه.
23
ID23
IDID23
IDIDID23
IDIDIDID....23
امیدوارم که متوجه شده باشی.
هرطور که عبارت منظم منویسی اون شکلی هم جواب میگیری
اگه تو عبارات منظم مشکل داشته کتاب نظریه زبانها و ماشین (پیتر لینز) رو مطالعه کن.
بازم اگه سوالی داشتی بپرس تا اگه سوادم قد داد جواب بدم.