فهرست
په لاندې تارونو کې، فرض کړئ چې تاسو د لومړي ترتیب شمیره حذف کول غواړئ. دا ډول ټولې شمیرې د هش نښه (#) سره پیل کیږي او دقیقا 5 عددونه لري. نو، موږ کولی شو دوی د دې regex په کارولو سره وپیژنو:
بطره : #\d{5}\b
کلمه boundary \b مشخص کوي چې یو ورته فرعي سټینګ نشي کیدی د لوی تار برخه لکه #10000001.
د ټولو میچونو لرې کولو لپاره، instance_num دلیل ندی تعریف شوی:
=RegExpReplace(A5, "#\d{5}\b", "")
یوازې د لومړۍ پیښې د له منځه وړلو لپاره، موږ instance_num دلیل 1 ته وټاکو:
=RegExpReplace(A5, "#\d{5}\b", "", 1)
15>
Regex د ځانګړو حروفونو د لرې کولو لپاره
د تار څخه ځینې ځانګړي حروف لرې کولو لپاره، یوازې ټول ناغوښتل شوي حروف ولیکئ او د عمودی بار سره یې جلا کړئد VBA RegExp محدودیتونو څخه پاک ترکیب، او دویم، ستاسو په کاري کتابونو کې د VBA کوډ داخلولو ته اړتیا نشته ځکه چې ټول کوډ ادغام زموږ لخوا په شالید کې ترسره کیږي.
ستاسو د دندې برخه د منظم بیان جوړول دي او دا فنکشن ته خدمت وکړئ :) اجازه راکړئ تاسو ته وښیم چې دا څنګه په عملي مثال کې ترسره کړئ.
څنګه د ریجیکس په کارولو سره په قوسونو او قوسونو کې متن لرې کړئ
په اوږد متن کې، لږ مهم معلومات ډیری وختونه په [بریکٹ] او (قوسونو) کې تړل کیږي. تاسو د نورو ټولو معلوماتو په ساتلو سره دا غیر اړونده توضیحات څنګه لرې کوئ؟
په حقیقت کې، موږ دمخه د html ټګونو حذف کولو لپاره ورته ریجیکس جوړ کړی دی، د بیلګې په توګه متن د زاویې بریکٹونو کې. په ښکاره ډول، ورته میتودونه به د مربع او ګردي قوسونو لپاره هم کار وکړي.
بطره : (\(.*?\))
ایا تاسو کله هم فکر کړی چې Excel به څومره پیاوړی وي که یو څوک کولی شي خپل اوزار بکس د منظم بیانونو سره بډایه کړي؟ موږ یوازې فکر نه دی کړی بلکې په دې یې کار کړی دی :) او اوس، تاسو کولی شئ دا په زړه پورې RegEx فنکشن په خپل کاري کتابونو کې اضافه کړئ او په هیڅ وخت کې د نمونې سره مطابقت لرونکي فرعي سټینګونه پاک کړئ!
تیره اونۍ، موږ ولیدل په Excel کې د تارونو بدلولو لپاره د منظم بیانونو کارولو څرنګوالی. د دې لپاره، موږ د ګمرک ریجیکس بدلولو فنکشن جوړ کړ. لکه څنګه چې دا معلومه شوه، فنکشن د خپل لومړني کارونې څخه بهر ځي او نشي کولی یوازې تارونه ځای په ځای کړي بلکې لیرې کړي. دا څنګه کیدای شي؟ د ایکسل په شرایطو کې ، د ارزښت لرې کول بل څه ندي مګر د خالي تار سره یې ځای په ځای کول ، هغه څه چې زموږ د ریجیکس فعالیت خورا ښه دی!
VBA RegExp فنکشن په Excel کې د فرعي سټینګونو لرې کولو لپاره
لکه څنګه چې موږ ټول پوهیږو، منظم څرګندونې په ډیفالټ کې په Excel کې نه ملاتړ کیږي. د دوی د فعالولو لپاره، تاسو اړتیا لرئ خپل د کارونکي لخوا ټاکل شوی فعالیت جوړ کړئ. ښه خبر دا دی چې دا ډول فعالیت لا دمخه لیکل شوی، ازمول شوی او د کارولو لپاره چمتو دی. ټول هغه څه چې تاسو یې کولو ته اړتیا لرئ دا کوډ کاپي کړئ، په خپل VBA مدیر کې یې پیسټ کړئ، او بیا خپل فایل د میکرو فعال شوي کاري کتاب (.xlsm) په توګه خوندي کړئ.
فنکشن لري لاندې ترکیب:
RegExpReplace(متن، نمونه، ځای په ځای کول، [instance_num]، [match_case])لومړي درې دلیلونه اړین دي، وروستي دوه اختیاري دي.
چیرته:
- متن - د لټون لپاره د متن تارممکن تر هغه وخته پورې چې دا د تړلو بریکٹ ومومي.
کوم نمونه چې تاسو غوره کوئ، پایله به بالکل ورته وي.
د مثال په توګه، په A5 کې د تار څخه ټول html ټګونه لرې کړئ او متن پریږدئ، فورمول دا دی:
=RegExpReplace(A5, "]*>", "")
یا تاسو کولی شئ سست مقدار کونکي وکاروئ لکه څنګه چې په سکرین شاټ کې ښودل شوي:
29>
دا حل په بشپړ ډول کار کوي واحد متن (قطار 5 - 9). د ډیری متنونو لپاره (قطار 10 - 12)، پایلې د پوښتنې وړ دي - د مختلف ټاګونو متنونه په یو کې یوځای شوي. دا سمه ده که نه؟ زه ویره لرم، دا هغه څه ندي چې په اسانۍ سره پریکړه کیدی شي - ټول ستاسو د مطلوب پایلې په پوهیدو پورې اړه لري. د مثال په توګه، په B11 کې، پایله "A1" تمه کیږي؛ پداسې حال کې چې په B10 کې، تاسو ممکن وغواړئ چې "data1" او "data2" د ځای سره جلا شي.
د html ټګونو لرې کولو او پاتې متنونو سره د ځایونو جلا کولو لپاره، تاسو کولی شئ په دې طریقه پرمخ لاړ شئ:
- ټاګونه د ځای "" سره بدل کړئ، نه خالي تارونه:
=RegExpReplace(A5, "]*>", " ")
- ډیری ځایونه په یو ځای کې کم کړئ:
=RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " ")
- مخکې او شاته ځایونه کم کړئ:
=TRIM(RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " "))
پایله به داسې ښکاري:
32>
Ablebits Regex Remove Tool
که تاسو د ایکسل لپاره زموږ د الټیمیټ سویټ کارولو فرصت لرئ ، تاسو شاید دمخه د وروستي ریلیز سره معرفي شوي نوي ریجیکس وسیلې ومومئ. د دې .NET پر بنسټ د Regex دندو ښکلا دا ده چې دوی، لومړی، د بشپړ ځانګړتیا لرونکي منظم بیان ملاتړ کويد لیرې کول اختیار، او کلیک وکړئ لیرې کړئ .
د دې لپاره چې پایلې د فورمول په توګه ترلاسه کړئ، نه د ارزښتونو په توګه، د د فورمول په توګه داخل کړئ چک بکس غوره کړئ.
په A2:A5 کې د تارونو څخه د بریکٹونو دننه متن لرې کولو لپاره، موږ ترتیبات تنظیم کوو. په لاندې ډول:
د پایلې په توګه، د AblebitsRegexRemove فنکشن ستاسو د اصلي ډیټا تر څنګ په نوي کالم کې داخلیږي.
فنکشن په مستقیم ډول په حجره کې د معیاري فنکشن داخلولو ډیالوګ بکس له لارې هم دننه کیدی شي، چیرې چې دا د AblebitsUDFs لاندې طبقه بندي کیږي.
لکه څنګه چې AblebitsRegexRemove د متن لرې کولو لپاره ډیزاین شوی، دا یوازې دوه دلیلونو ته اړتیا لري - د سرچینې تار او ریجیکس. دواړه پیرامیټونه په مستقیم ډول په فورمول کې تعریف کیدی شي یا د حجرو حوالې په بڼه وړاندې کیږي. که اړتیا وي، دا دودیز فعالیت د هر اصلي سره یوځای کارول کیدی شي.
د مثال په توګه، په پایله کې د تارونو اضافي ځایونو کمولو لپاره، تاسو کولی شئ د TRIM فنکشن د ریپر په توګه وکاروئ:
=TRIM(AblebitsRegexRemove(A5, $A$2))
دا د منظم بیانونو په کارولو سره په Excel کې د تارونو لرې کولو څرنګوالی دی. زه ستاسو د لوستلو لپاره مننه کوم او په راتلونکې اونۍ کې زموږ په بلاګ کې تاسو سره لیدو ته سترګې په لار یم!
موجود ډاونلوډونه
د ریجیکس په کارولو سره تارونه لرې کړئ - مثالونه (.xlsm فایل)
Ultimate Suite - د آزموینې نسخه (.exe فایل)
in.د نورو معلوماتو لپاره، مهرباني وکړئ د RegExpReplace فنکشن وګورئ.
لارښوونه. په ساده قضیو کې، تاسو کولی شئ د Excel فورمولونو سره د حجرو څخه ځانګړي حروف یا کلمې لرې کړئ. مګر منظم بیانات د دې لپاره ډیر انتخابونه وړاندې کوي.
د منظم بیانونو په کارولو سره د تارونو لرې کولو څرنګوالی - مثالونه
لکه څنګه چې پورته یادونه وشوه، د متن سره مطابقت لرونکي برخې لرې کولو لپاره، تاسو باید دوی بدل کړئ. د خالي تار سره. نو، یو عام فورمول دا شکل اخلي:
RegExpReplace(text, pattern, "", [instance_num], [match_case])لاندې مثالونه د دې بنسټیز مفهوم مختلف تطبیقونه ښیې.
لیرې کړئ ټول میچونه یا ځانګړي میچ
د RegExpReplace فنکشن د دې لپاره ډیزاین شوی چې ټول فرعي سټینګونه ومومي چې د ورکړل شوي ریجیکس سره سمون لري. د لرې کولو لپاره کومې پیښې د څلورم اختیاري دلیل لخوا کنټرول کیږي، چې نوم یې instance_num نومیږي.
ډیفالټ "ټول میچونه" دي - کله چې instance_num د کنکټیشن آپریټر (&) او د متن افعال لکه RIGHT، MID او LEFT.
د مثال په توګه، د ټولو تلیفون شمیرو د (123) 456-7890 بڼه کې لیکلو لپاره، فورمول دا دی:
="("&LEFT(B5, 3)&") "&MID(B5, 4, 3)&"-"&RIGHT(B5, 4)
چیرې چې B5 د RegExpReplace فنکشن محصول دی.
د regex په کارولو سره ځانګړي حروف لرې کړئ
زموږ په یوه ښوونیز کې، موږ وګورو چې څنګه په Excel کې ناغوښتل شوي حروف د بلب شوي او دودیز افعالاتو په کارولو سره لرې کړو. منظم څرګندونې شیان خورا اسانه کوي! د حذف کولو لپاره د ټولو کرکټرونو لیست کولو پرځای ، یوازې هغه مشخص کړئ چې تاسو یې ساتل غواړئ :)
نمونه د منفي کرکټر ټولګیو پر بنسټ والړ ده - یو کیریټ د کرکټر ټولګي کې ځای په ځای شوی دی [^ ] د کوم واحد کرکټر سره سمون کول چې په بریکٹ کې ندي. + مقدار کوونکی دې ته مجبوروي چې پرله پسې کرکټرونه د یو واحد میچ په توګه وګڼي، نو د هر انفرادي کرکټر په ځای د مطابقت لرونکي سبسټرینګ لپاره بدیل ترسره کیږي.
ستاسو اړتیاو پورې اړه لري، د لاندې ریجیکسونو څخه یو غوره کړئ.
د غیر الفانومیریک حروفونو د لرې کولو لپاره، د بیلګې په توګه ټول حروف پرته له حروفو او عددونو:
پټرن : [^0-9a-zA-Z] +
د ټولو حروفونو د پاکولو لپاره پرته له لیکونو ، ګوندونو او ځایونه :
بطره : [^0-9a-zA-Z ]+
د ټولو حروفونو د حذف کولو لپاره پرته له لیکونو ، ګوندونو او انډر سکور ، تاسو کولی شئ \ وکاروئ W دا د هر هغه کرکټر لپاره ولاړ دی چې د الفانومریک کرکټر نه وي یاunderscore:
Pattern : \W+
که تاسو غواړئ ځینې نور حروف وساتئ ، د بیلګې په توګه. د ټکي نښه، په قوسونو کې دننه کېږدئ.
د مثال په توګه، د خط، عدد، دورې، کوما، یا ځای څخه پرته د بل هر حرف د لرې کولو لپاره، لاندې ریجیکس وکاروئ:
پټن : [^0-9a-zA-Z\., ]+
دا په بریالیتوب سره ټول ځانګړي حروف له منځه وړي، مګر اضافي سپین ځای پاتې دی.
د دې د حل کولو لپاره، تاسو کولی شئ پورتني فنکشن په بل ځای کې وخورئ چې ډیری ځایونه د یو واحد ځای کریکٹر سره بدلوي.
=RegExpReplace(RegExpReplace(A5,$A$2,""), " +", " ")
یا یوازې د ورته تاثیر سره اصلي TRIM فنکشن وکاروئ :
=TRIM(RegExpReplace(A5, $A$2, ""))
ریجیکس د غیر عددي حروفونو لرې کولو لپاره
د تار څخه د ټولو غیر عددي حروف حذف کولو لپاره ، تاسو کولی شئ وکاروئ یا دا اوږده فورمول یا یو له خورا ساده ریجیکسونو څخه چې لاندې لیست شوي دي.
هر هغه کرکټر سره سمون خوري چې عدد نه وي:
بطره : \D+
<0 غیر عددي حروف د منفي ټولګیو په کارولو سره پټ کړئ:بطره : [^0-9]+
پټرن : [^\d] +
لارښوونه. که ستاسو هدف دا وي چې متن لرې کړئ او پاتې شمیرې په جلا حجرو کې توزیع کړئ یا دا ټول په یوه حجره کې د ټاکل شوي ډیلیمیټر سره جلا کړئ ، نو د RegExpExtract فنکشن وکاروئ لکه څنګه چې تشریح شوي د منظم بیانونو په کارولو سره د تار څخه شمیرې استخراج کولو څرنګوالی.
ریجیکس د ځای څخه وروسته د هرڅه لرې کولو لپاره
د ځای څخه وروسته د هر څه پاکولو لپاره ، یا هم ځای () وکاروئ یاسپینه ځای (\s) کرکټر د لومړي ځای موندلو لپاره او .* د دې وروسته د هر حروف سره سمون لپاره.
که تاسو واحد لیکي تارونه لرئ چې یوازې نورمال ځایونه لري (په 7-bit ASCII سیسټم کې ارزښت 32) ، دا واقعیا مهمه نده چې تاسو لاندې کوم ریجیکس کاروئ. د څو کرښو تارونو په صورت کې، دا یو توپیر رامنځته کوي.
د هر څه د لرې کولو لپاره د خلا کریکټر وروسته ، دا ریجیکس وکاروئ:
پټن : ".*"
=RegExpReplace(A5, " .*", "")
دا فورمول به په هره کرښه کې د لومړي ځای وروسته هر څه لرې کړي. د دې لپاره چې پایلې په سمه توګه ښکاره شي، ډاډ ترلاسه کړئ چې د ریپ متن فعال کړئ.
د هر څه لرې کولو لپاره د سپینې ځای وروسته (د ځای، ټب، د موټر بیرته راستنیدو او نوې کرښې په ګډون)، ریجیکس دا دی:
پټرن : \s.*
=RegExpReplace(A5, "\s.*", "")
ځکه چې د یو څو مختلف سپین ځای ډولونو سره سمون لري پشمول یوه نوې کرښه (\n)، دا فورمول په حجره کې د لومړي ځای څخه وروسته هر څه حذف کوي، مهمه نده چې په دې کې څومره کرښې شتون ولري.
Regex د ځانګړي وروسته متن لرې کولو لپاره کرکټر
د پخواني مثال د میتودونو په کارولو سره، تاسو کولی شئ د هر هغه کرکټر وروسته متن له منځه یوسي چې تاسو یې مشخص کړئ.
د هرې کرښې په جلا توګه اداره کولو لپاره:
عمومي نمونه : char.*
په واحد کرښه تارونو کې، دا به د چار وروسته هرڅه لرې کړي. په څو لاین تارونو کې، هره کرښه به په انفرادي ډول پروسس شي ځکه چې د VBA Regex ذائق کې، دوره (.) د نوي پرته پرته له کوم کرکټر سره سمون لريد سټرینګ پیل ^، موږ صفر یا ډیر غیر ځایی حروف [^ ]* سره سمون خوري چې سمدلاسه د یو یا ډیرو ځایونو "+" لخوا تعقیب شوي. وروستنۍ برخه په پایلو کې د احتمالي مخکښو ځایونو د مخنیوي لپاره اضافه کیږي.
په هره کرښه کې د لومړي ځای څخه مخکې د متن لرې کولو لپاره، فورمول په ډیفالټ "ټول میچز" حالت کې لیکل کیږي ( instance_num پریښودل شوی):
=RegExpReplace(A5, "^[^ ]* +", "")
د دې لپاره چې په لومړۍ کرښه کې د لومړي ځای څخه مخکې متن حذف شي، او نورې ټولې کرښې پاتې شي، د instance_num دلیل 1 ته ټاکل شوی:
=RegExpReplace(A5, "^[^ ]* +", "", 1)
ریجیکس د کرکټر څخه مخکې د هرڅه لرې کولو لپاره
د یو ځانګړي کرکټر دمخه د ټول متن لرې کولو ترټولو اسانه لار د ریجیکس کارول دي د دې په څیر:
عمومي نمونه : ^[^char]*char
انساني ژبې ته ژباړل شوی، دا وايي: "د یو تار له پیل څخه چې ^ لخوا لنگر شوی , د 0 یا ډیرو حروفونو سره سمون خوري پرته له چار [^char]* تر لومړۍ پیښې پورې د char .
د مثال په توګه، د لومړي کولون څخه مخکې ټول متن حذف کول , دا منظم بیان وکاروئ:
بطره : ^[^:]*:
د دې لپاره چې په پایلو کې د مخکښو ځایونو څخه مخنیوی وشي، د سپینې ځای ځای \s* اضافه کړئ دا به هر څه لرې کړي g د لومړي کولون څخه مخکې او د هغې وروسته سم ځایونه ټرم کړئ:
بطره : ^[^:]*:\s*
=RegExpReplace(A5, "^[^:]*:\s*", "")
لارښوونه. د منظم څرګندونو سربیره، Excel د موقعیت یا میچ په واسطه د متن لرې کولو لپاره خپل وسیله لري. د اصلي فارمولونو سره د دندې سرته رسولو څرنګوالي زده کولو لپاره ،مهرباني وکړئ وګورئ چې څنګه په Excel کې د کرکټر دمخه یا وروسته متن لرې کړئ.
ریجیکس د هر څه لرې کولو لپاره پرته له
د تار څخه د ټولو حروفونو له مینځه وړلو لپاره پرته له هغه چې تاسو یې ساتل غواړئ، د منفي کرکټر ټولګي وکاروئ.
د مثال په توګه، د کوچنیو تورو پرته د ټولو حروفونو لرې کولو لپاره او نقطې، ریجیکس دا دی:
پټرن : [^a-z\.]+
په حقیقت کې، موږ کولی شو دلته د + مقدار کونکي پرته ترسره کړو ځکه چې زموږ فعالیت ټول ځای په ځای کوي میچونه وموندل. مقدار کوونکی یوازې دا یو څه ګړندی کوي - د هر انفرادي کرکټر اداره کولو پرځای ، تاسو یو فرعي سټینګ بدل کړئ.
=RegExpReplace(A5, "[^a-z\.]+", "")
28>
په Excel کې د html ټګونو لرې کولو لپاره Regex
لومړی، دا باید په پام کې ونیول شي چې HTML یوه منظمه ژبه نه ده، نو د منظم بیانونو په کارولو سره یې تحلیل کول غوره لاره نه ده. دې وویل، ریجیکس کولی شي ستاسو د ډیټاسیټ پاکولو لپاره ستاسو له حجرو څخه د ټاګونو لرې کولو کې یقینا مرسته وکړي.
دې ته په پام سره چې html ټګونه تل د زاویې بریکٹونو کې ځای په ځای شوي ، تاسو کولی شئ دوی د لاندې ریجیکسونو څخه یو په کارولو سره ومومئ.
منفي طبقه:
بطره : ]*>
دلته، موږ د پرانیستې زاویې بریکٹ سره سمون خورو، وروسته د صفر یا ډیرو پیښو څخه پرته د هر کرکټر څخه د تړلو زاویه بریکٹ [^>]* تر نږدې تړلو زاویه بریکٹ پورې.
سست لټون:
بطره :
دلته، موږ سره سمون خوري هر څه د لومړي پرانیستې بریکٹ څخه تر لومړۍ تړلې بریکٹ پورې. د پوښتنې نښه .* د لږو حروفونو سره سمون لريکرښه.
د یو واحد تار په توګه د ټولو لینونو پروسس کولو لپاره:
عمومي نمونه : char(.