רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

אויב איר זענט לפּחות אַ ביסל באַקאַנט מיט רעגולער אויסדרוקן, איר טאָן ניט דאַרפֿן צו מעלדן זיי. אויב איר זענט נישט גאַנץ אין די ונטערטעניק, רעגולער אויסדרוקן (רעגולאַר עקספּרעססיאָנס = רעגעקספּ = "רעגעקספּס" = "רעגולאַרס") איז אַ שפּראַך ווו, ניצן ספּעציעל אותיות און כּללים, די נייטיק סאַבסטרינגס זענען געזוכט אין דעם טעקסט, זיי זענען יקסטראַקטיד אָדער ריפּלייסט מיט אנדערע טעקסט. דאָס איז אַ זייער שטאַרק און שיין געצייַג, אַ סדר פון מאַגנאַטוד העכער ווי אַלע אנדערע וועגן צו אַרבעטן מיט טעקסט.

איך האָבן שוין דיסקרייבד אין דעטאַל און מיט אַ בינטל פון ביישפילן פון לעבן ווי איר קענען לייגן רעגולער אויסדרוק שטיצן צו עקססעל מיט פּשוט מאַקראָס - אויב איר האָט נישט לייענען דעם אַרטיקל, איך רעקאָמענדירן איר לייענען עס איידער איר פאָרזעצן. איר וועט אַנטדעקן אַ פּלאַץ פון נייַע טינגז, איך גאַראַנטירן 🙂

אָבער, די קשיא בלייבט אָפן - ווי צו לייגן די פיייקייט צו נוצן רעגולער אויסדרוקן אין Power Query? Power Query, פון קורס, איז גוט אויף זיך און קענען טאָן אַ פּלאַץ מיט טעקסט (שנייַדן, גלוינג, רייניקונג, אאז"ו ו), אָבער אויב איר קען קרייַז עס מיט די מאַכט פון רעגולער אויסדרוקן, עס וואָלט זיין נאָר אַ באָמבע.

צום באַדויערן, עס זענען קיין געבויט-אין פאַנגקשאַנז פֿאַר ארבעטן מיט RegExps אין Power Query, און באַאַמטער מיקראָסאָפט הילף און טעכניש שטיצן ענטפֿערן דעם קשיא אין די נעגאַטיוו. אָבער, עס איז אַ וועג אַרום דעם באַגרענעצונג 🙂

די עסאַנס פון דעם אופֿן

דער הויפּט געדאַנק איז פּשוט צו שאַנד.

אין דער רשימה פון געבויט-אין Power Query קייפּאַבילאַטיז, עס איז אַ פֿונקציע וועב בלאַט. די באַשרייַבונג פון דעם פֿונקציע אויף דער באַאַמטער מיקראָסאָפט הילף פּלאַץ איז גאָר קאַנסייס:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

איבערגעזעצט, דאָס וואָלט זיין: "קערט די אינהאַלט פון די HTML דאָקומענט צעבראכן אַראָפּ אין זייַן קאָמפּאָנענט סטראַקטשערז, ווי געזונט ווי אַ פאַרטרעטונג פון די גאַנץ דאָקומענט און זיין גוף נאָך די טאַגס זענען אַוועקגענומען." אַזוי-אַזוי באַשרייַבונג, פראַנגקלי.

יוזשאַוואַלי די פֿונקציע איז געניצט ווען ימפּאָרטינג דאַטן פון די וועב און איז אויטאָמאַטיש סאַבסטאַטוטאַד, למשל, ווען מיר סעלעקטירן דעם קוויטל דאַטע באַפעל פון די אינטערנעט (דאַטן - פֿון וועב). מיר געבן די פֿונקציע אַ וועב בלאַט ווי אַן אַרגומענט, און עס קערט אונדז זייַן אינהאַלט אין די פאָרעם פון טישן, נאָך פריער קלירד אַלע די טאַגס.

וואָס די הילף טוט נישט זאָגן איז אַז אין אַדישאַן צו די HTML מאַרקאַפּ שפּראַך פונקציאָנירן וועב בלאַט שטיצט דזשאַוואַסקריפּט סקריפּס, וואָס איז איצט ומעטומיק אויף וועבסיטעס אויף דער אינטערנעץ. און דזשאַוואַסקריפּט, אין קער, האט שטענדיק געווען ביכולת צו אַרבעטן מיט רעגולער אויסדרוקן און האט אַ געבויט-אין פאַנגקשאַנז פֿאַר רעגעקספּס! אַזוי צו ינסטרומענט רעגולער אויסדרוקן אין Power Query, מיר דאַרפֿן צו קאָרמען די וועב.פּאַגע פאַנגקשאַנז ווי אַן אַרגומענט צו אַ קליין דזשאַוואַסקריפּט פּראָגראַם וואָס וועט טאָן אַלע די אַרבעט פֿאַר Power Query.

ווי עס קוקט ווי אין ריין דזשאַוואַסקריפּט

עס זענען אַ פּלאַץ פון דיטיילד טוטאָריאַלז אויף ארבעטן מיט רעגולער אויסדרוקן אין דזשאַוואַסקריפּט אויף דער אינטערנעץ (למשל, איינער, צוויי).

אין קורץ און סימפּלאַפייד, די דזשאַוואַסקריפּט קאָד וועט קוקן ווי דאָס:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

דאָ:

  • var str = 'באַצאָלן ביללס 123 און 789 פֿאַר ווורשט'; - שאַפֿן אַ בייַטעוודיק סטר און באַשטימען עס די מקור טעקסט וואָס מיר וועלן אַנאַלייז.
  • וואַר מוסטער = /ד+/גי; - שאַפֿן אַ רעגולער אויסדרוק און שטעלן עס אין אַ בייַטעוודיק מוסטער.

    דער אויסדרוק סטאַרץ מיט אַ צעהאַקן (/).

    דער אויסדרוק זיך דאָ, למשל, איז d+ שטייט פֿאַר קיין סיקוואַנס פון דידזשאַץ.

    דורך די בראָכצאָל נאָך דער אויסדרוק, עס זענען נאָך זוכן פּאַראַמעטערס (מאָדיפיערס) - זיי קענען זיין ספּעסיפיעד אין קיין סדר:

    • g – מיטל גלאבאלע זוכן, ד"ה נאָך געפונען אַ גלייַכן, איר זאָל נישט האַלטן, אָבער פאָרזעצן די זוכן ביז דעם סוף פון די טעקסט. אויב דער מאָדיפיער איז נישט באַשטימט, אונדזער שריפט וועט נאָר צוריקקומען דער ערשטער גלייַכן (123)
    • i - זוכן אָן אַכטונג צו פאַל פון אותיות
    • m - מאַלטי-שורה זוכן (געניצט ווען דער מקור טעקסט איז צעטיילט אין עטלעכע שורות)
  • וואַר רעזולטאַט = סטר.מאַטטש (מוסטער).דזשאָין (';'); - דורכפירן אַ זוכן אין די מקור טעקסט (סטר) דורך די געגעבן רעגולער אויסדרוק (מוסטער) און שטעלן די רעזולטאַטן אין אַ בייַטעוודיק טאַכלעס, קאַנקאַטאַנייטינג זיי מיט אַ סימיקאָלאָן ניצן די באַפֿעל פאַרבינדן
  • document.write (רעזולטאַט); - ווייַזן די אינהאַלט פון די רעזולטאַט וועריאַבאַלז

אויך טאָן אַז טעקסט סטרינגס (עקסקלודינג רעגולער אויסדרוקן) אין דזשאַוואַסקריפּט זענען ענקלאָוזד אין אַפּאָסטראָפעס, נישט קוואָטעס ווי זיי זענען אין Power Query אָדער VBA.

אין דער רעזולטאַט, דעם שריפט וועט געבן אונדז אַלע די נומערן געפֿונען אין די מקור טעקסט:

קסנומקס, קסנומקס

דזשאַוואַסקריפּט קורץ קורס איז איבער, דאַנקען דיר אַלע. האָפענונג איר באַקומען די לאָגיק 🙂

עס בלייבט צו אַריבערפירן דעם קאַנסטראַקשאַן צו Power Query.

זוכן און עקסטראַקט טעקסט פונקציע דורך רעגולער עקספּרעססיאָן אין מאַכט אָנפֿרעג

מיר טאָן די פאלגענדע:

1. עפֿן עקססעל און שאַפֿן אַ נייַ ליידיק מאַכט אָנפֿרעג אין די קוויטל דאַטן - באַקומען דאַטן / שאַפֿן בעטן - פֿון אנדערע קוואלן - ליידיק בעטן (דאַטאַ - באַקומען דאַטן / נייַ אָנפֿרעג - פֿון אנדערע קוואלן - ליידיק אָנפֿרעג). אויב איר האָבן אַן אַלט ווערסיע פון ​​​​Excel 2010-2013 און Power Query איר טאָן ניט האָבן אַ געבויט-אין, אָבער איז אינסטאַלירן ווי אַ באַזונדער לייגן-אין, אַלע דעם וועט זיין אויף די קוויטל מאַכט קוועריאון נישט דאַטע.

2. אין די ליידיק פֿענצטער פון די אָנפֿרעג רעדאַקטאָר וואָס אָפּענס, אין די רעכט טאַפליע, אַרייַן די נאָמען פון אונדזער צוקונפֿט פונקציע (למשל, fxRegExpExtract)

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

3. לאָמיר גיין צו די קוויטל View - אַוואַנסירטע עדיטאָר (View — Advanced Editor), מיר מעקן די גאנצע M-קאָד פון די ליידיק בעטן און פּאַפּ די קאָד פון אונדזער סופּערפונקטיאָן דאָרט:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

היטן דיין הענט:

אין דער ערשטער שורה, מיר זאָגן אַז אונדזער פֿונקציע וועט האָבן דרייַ טעקסט אַרגומענטן: טקסט - דער אָריגינעל טעקסט וואָס איז אַנאַלייזד, רעגעקס - רעגולער אויסדרוק מוסטער, דעלים - דעלימיטער כאַראַקטער פֿאַר ווייַזנדיק רעזולטאַטן.

ווייַטער מיר רופן די פֿונקציע וועב בלאַט, פאָרמינג די דזשאַוואַסקריפּט קאָד דיסקרייבד אויבן אין זייַן אַרגומענט. מיר פּאַפּ און פאַרבייַטן אונדזער בייַטעוודיק אַרגומענטן אין די קאָד.

פראַגמענט:

[דאטן]{0}[קינדער]{0}[קינדער]{1}[טעקסט]{0}

... איז דארף צו "פאַלן דורך" אין די טיש מיט די רעזולטאַטן מיר דאַרפֿן. די פונט איז אַז די פֿונקציע וועב בלאַט ווי אַ רעזולטאַט, עס טראגט עטלעכע נעסטעד טישן וואָס איבערחזרן די סטרוקטור פון אַ וועב בלאַט. אָן דעם שטיק פון M-קאָד, אונדזער פֿונקציע וואָלט רעזולטאַט דעם:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

... און מיר וואָלט האָבן צו גיט די וואָרט עטלעכע מאָל טיש, סאַקסעסיוולי "פאַלן דורך" אין קינד נעסטעד טישן אין שפאלטן קינדער:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

אַנשטאָט אַלע דעם ציטאַט, מיר מיד אָנווייַזן אין די קאָד פון אונדזער פֿונקציע וואָס נעסטעד טיש און זייַל (טעקסט) מיר ברויכן.

דאָ, אין פאַקט, אַלע די סיקריץ. עס בלייבט צו דריקן דעם קנעפּל ענדיקן אין די פֿענצטער אַוואַנסירטע רעדאַקטאָר, ווו מיר ינסערטאַד אונדזער קאָד, און איר קענען גיינ ווייַטער צו די מערסט געשמאַק - פּרובירן אונדזער פונקציע אין אַרבעט.

דאָ זענען אַ פּאָר פון זוימען ביישפילן.

בייַשפּיל 1. ריטריווינג די חשבון נומער און דאַטע פון ​​די צאָלונג באַשרייַבונג

מיר האָבן אַ באַנק ויסזאָגונג מיט אַ באַשרייַבונג (ציל) פון פּיימאַנץ, ווו איר דאַרפֿן צו ציען די נומערן און דאַטעס פון באַצאָלט ינווויסיז אין באַזונדער שפאלטן:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

מיר לאָדן די טיש אין Power Query אין די נאָרמאַל וועג דורך דאַטן - פֿון טיש / קייט (דאַטן - פֿון טקענען / רמלאך).

דערנאָך מיר לייגן אַ קאַלקיאַלייטיד זייַל מיט אונדזער פונקציע דורך לייג זייַל - רופן מנהג פונקציע (לייג זייַל - רופן מנהג פונקציע) און אַרייַן זיין טענות:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

ווי אַ רעגולער אויסדרוק (אַרגומענט רעגעקס) מוסטער מיר נוצן:

(ד {3,5}|ד{2}.ד{2}.ד{4})

... איבערגעזעצט אין מענטש שפּראַך טייַטש: 

נומערן פון 3 צו 5 דידזשאַץ (חשבון נומערן)

or

פראַגמאַנץ פון די פאָרעם "2-ביסל נומער - פונט - 2-ביסל נומער - פונט - 4-ביסל נומער", דאָס הייסט, דאַטעס פון דער פאָרם DD.MM.YYYY.

ווי אַ דעלימיטער כאַראַקטער (אַרגומענט דעלים) אַרייַן אַ האַלבקייַלעך.

נאָך דריקט אויף OK אונדזער מאַגיש פונקציע אַנאַליזירט אַלע די ערשט דאַטן לויט אונדזער רעגולער אויסדרוק און פארמען אַ זייַל פֿאַר אונדז מיט די געפֿונען נומערן און דאַטעס פון די ינווויסיז:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

עס בלייבט צו צעטיילן עס דורך די צוויי מאָל מיט די באַפֿעל היים - שפּאַלטן זייַל - דורך דעלימיטער (היים - שפּאַלטן זייַל - דורך דעלימיטער) און מיר באַקומען וואָס מיר געוואלט:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

שיינקייט!

בייַשפּיל 2: עקסטראַקט E- בריוו ווענדט פון טעקסט

רעכן מיר האָבן די פאלגענדע טיש ווי ערשט דאַטן:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

... פֿון ווו מיר דאַרפֿן צו ציען די E- בריוו אַדרעסעס געפֿונען דאָרט (פֿאַר קלעריטי, איך כיילייטיד זיי אין רויט אין די טעקסט).

ווי אין די פריערדיקע בייַשפּיל, מיר לאָדן די טיש אין Power Query אין די נאָרמאַל וועג דורך דאַטן - פֿון טיש / קייט (דאַטן - פֿון טקענען / רמלאך).

דערנאָך מיר לייגן אַ קאַלקיאַלייטיד זייַל מיט אונדזער פונקציע דורך לייג זייַל - רופן מנהג פונקציע (לייג זייַל - רופן מנהג פונקציע) און אַרייַן זיין טענות:

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

פּאַרסינג E- בריוו ווענדט איז אַ מער שווער אַרבעט און עס זענען אַ בינטל פון רעגולער אויסדרוקן פון וועריינג נייטמערז צו סאָלווע עס. איך געוויינט איינער פון די פּשוט אָפּציעס - ניט ידעאַל, אָבער גאַנץ ארבעטן אין רובֿ קאַסעס:

[וו|.|-]*@וו*.[וו|.]*

ווי סעפּאַראַטאָר (דעלים) איר קענען אַרייַן אַ האַלבקייַלעך און אַ פּלאַץ.

דריקט אויף OK און מיר באַקומען אַ זייַל מיט E- פּאָסט אַדרעסעס יקסטראַקטיד פון דער אָריגינעל טעקסט "קאַשע":

רעגולער עקספּרעססיאָנס (רעגעקספּ) אין מאַכט אָנפֿרעג

מאַגיש!

PS

ווי דער זאגן גייט: "עס איז ניט אַזאַ גוטע זאַך וואָס קען נישט זיין אפילו בעסער." Power Query איז קיל אויף זיך, און ווען קאַמביינד מיט רעגולער אויסדרוקן, עס גיט אונדז גאָר אַנריליסטיק מאַכט און בייגיקייַט אין פּראַסעסינג קיין טעקסט דאַטן. איך האָפֿן אַז מייקראָסאָפֿט וועט אַמאָל לייגן רעגעקספּ שטיצן אין Power Query און Power BI דערהייַנטיקונגען און אַלע די אויבן דאַנסיז מיט אַ טאַמבורין וועט ווערן אַ זאַך פון דער פאַרגאַנגענהייט. נו, פֿאַר איצט, יאָ.

איך אויך ווילן צו לייגן אַז עס איז באַקוועם צו שפּילן מיט רעגולער אויסדרוקן אויף דעם פּלאַץ https://regexr.com/ - רעכט אין די אָנליין רעדאַקטאָר. דאָרט אין דער אָפּטיילונג קהל פּאַטערנז עס זענען אַ ריזיק נומער פון פאַרטיק רעגולער סעאַסאָנס פֿאַר אַלע מאל. עקספּערימענט - אַלע די מאַכט פון רעגולער אויסדרוקן איז איצט צו דיין דינסט אין Power Query!

  • וואָס זענען רעגולער אויסדרוקן (רעגעקספּ) און ווי צו נוצן זיי אין עקססעל
  • פאַזי טעקסט זוכן אין Power Query
  • אַסעמבאַל טישן פון פאַרשידענע טעקעס ניצן Power Query

לאָזן אַ ענטפֿערן