Forum Discussion

mwild's avatar
mwild
Frequent Visitor
4 years ago
Solved

String Extract based on criteria

I have a table and one column contains free text.  I'm looking to add a column which will search the free text and extract anything which has a letter followed by 5 numbers.

 

For example - the below would be extracted:


D98765

d12345

D 54821

d 65411

This could be anywhere within the string of text.  Is this possible?

  • mwild  ***Made a tweak to the code***

    The following works. I will let you tweak the code further if you need to so I am not doing all your homework ğŸ˜‚

     

    StringMatch = 
    VAR NoBlankFreeText =
        SUBSTITUTE ( 'Sample Data'[FreeText], " ", "", 1 )
    VAR UpperD =
        FIND ( "D", NoBlankFreeText, 1, BLANK () )
    VAR LowerD =
        FIND ( "d", NoBlankFreeText, 1, BLANK () )
    VAR PositionD =
        IF ( ISNUMBER ( UpperD ), UpperD, LowerD)
    VAR CheckNumbers =
        ISERROR (
            ISNUMBER ( VALUE ( MID ( NoBlankFreeText, PositionD + 1, 5 ) ) )
        )
    RETURN 
        IF (
            NOT ( CheckNumbers ),
            MID ( NoBlankFreeText, PositionD, 6),
            "No Match"
        )

     

     

     

     

7 Replies

  • Or you can use CONTAINSSTRING function e.g 

    MyCalculatedColumn = If(CONTAINSSTRING([TARGETCOLUMN];"searchforthis");TRUE();FALSE())

     

    • moizsherwani's avatar
      moizsherwani
      Continued Contributor

      I am not sure how this will work when the end goal is "any letter followed by any numbers" when the letter and the numbers could be anything, e.g. it can be "Z 98765" or "b34561" or worse "!@#@!D48202@#!@".

      • mwild's avatar
        mwild
        Frequent Visitor

        The letter will always be "D" or "d"
        There may be a space (or may not be) and then 5 numbers between 0 and 9