Regex په Excel کې د ځینې حروف یا متن لرې کولو لپاره

  • دا شریک کړه
Michael Brown
استدلال پریښودل شوی، ټول موندل شوي میچونه لیرې شوي. د یو مشخص میچ د حذف کولو لپاره، د مثال شمیره تعریف کړئ.

په لاندې تارونو کې، فرض کړئ چې تاسو د لومړي ترتیب شمیره حذف کول غواړئ. دا ډول ټولې شمیرې د هش نښه (#) سره پیل کیږي او دقیقا 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 ټګونو لرې کولو او پاتې متنونو سره د ځایونو جلا کولو لپاره، تاسو کولی شئ په دې طریقه پرمخ لاړ شئ:

  1. ټاګونه د ځای "" سره بدل کړئ، نه خالي تارونه:

    =RegExpReplace(A5, "]*>", " ")

  2. ډیری ځایونه په یو ځای کې کم کړئ:

    =RegExpReplace(RegExpReplace(A5, "]*>", " "), " +", " ")

  3. مخکې او شاته ځایونه کم کړئ:

    =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.
  • پټرن - د لټون لپاره منظم بیان.
  • بدلون - د بدلولو متن. د دې لپاره چې فرعي سټینګونه لرې کړئ د نمونې سره سمون خوري، د ځای په ځای کولو لپاره د خالي تار ("") وکاروئ. بدلول که پریښودل شي، ټول موندل شوي میچونه بدل شوي (ډیفالټ).
  • Match_case (اختیاري) - د بولین ارزښت په ګوته کوي چې ایا د متن قضیه سره سمون لري یا له پامه غورځول کیږي. د قضیې حساس میچ کولو لپاره، ریښتیا (ډیفالټ) وکاروئ؛ for case-insensitive - FALSE.
  • د نورو معلوماتو لپاره، مهرباني وکړئ د 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(.

    مایکل براون د ټیکنالوژۍ وقف شوی لیوال دی چې د سافټویر وسیلو په کارولو سره د پیچلو پروسو ساده کولو لپاره لیوالتیا لري. د ټیک صنعت کې د یوې لسیزې څخه ډیرې تجربې سره، هغه خپل مهارتونه په مایکروسافټ ایکسل او آؤټ لک کې، او همدارنګه د ګوګل شیټس او اسنادو کې لوړ کړي دي. د مایکل بلاګ د نورو سره د هغه پوهه او تخصص شریکولو ته وقف شوی دی، د تولید او موثریت د ښه کولو لپاره د تعقیب لپاره اسانه لارښوونې او لارښوونې چمتو کوي. که تاسو تجربه لرونکی مسلکي یاست یا پیل کونکی یاست ، د مایکل بلاګ د دې اړین سافټویر وسیلو څخه خورا ډیر ترلاسه کولو لپاره ارزښتناک لیدونه او عملي مشورې وړاندې کوي.