August 21, 2019
Hi,
What is the Syntax for Text.Contains M code in Power Query
i.e. LMS800 = LMS800, LMS800C4 = LMS800C4
If Document = "....................LMS800C4.........." then return LMS800C4 exactly instead of two outputs (See my attachment)
Thank you!
Trusted Members
Moderators
November 1, 2018
Power Query
Power Pivot
Xtreme Pivot Tables
Excel for Decision Making
Excel for Finance
Excel Analysis Toolpak
Power BI
Excel
Word
Outlook
Excel Expert
Excel Customer Service
PowerPoint
November 8, 2013
Power Query
Power Pivot
Xtreme Pivot Tables
Excel for Decision Making
Excel for Finance
Excel Analysis Toolpak
Power BI
Excel
Word
Outlook
Excel Expert
Excel Customer Service
PowerPoint
November 8, 2013
Power Query
Power Pivot
Xtreme Pivot Tables
Excel for Decision Making
Excel for Finance
Excel Analysis Toolpak
Power BI
Excel
Word
Outlook
Excel Expert
Excel Customer Service
PowerPoint
November 8, 2013
There is a way to use regular expressions to match complex patterns in power query, if you have messy data.
Here is the function I am using:
(Text as text, Pattern as text)=>
let
RunScript = Web.Page(
"<script>
document.write(
"""&Text&""".match(
new RegExp('"&Pattern&"','g')
).join(';')
);
</script>"
),
Matches = try RunScript{0}[Data]{0}[Children]{1}[Children]{0}[Text] otherwise null
in
Matches
The query is simple, just take the text from a table, the pattern from another table and pass them to the function:
let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
Pattern = Excel.CurrentWorkbook(){[Name="Pattern"]}[Content]{0}[Pattern],
#"Added Custom" = Table.AddColumn(Source, "Matches", each FindMatches([Text],Pattern))
in
#"Added Custom"
You can specify in the pattern lots of conditions like: text can be at the beginning, at the end, might be delimited by some chars, and lots of complex scenarios.
August 21, 2019
Chris Yap said
Hi Catalin, thanks for your tips, this works for Project number infront with blankfor this type Document 898 LS(T)800/2890DOC, it will not work, does it mean that I need to add a "/" to original value, that will be tedious
if there any other workaround
Thank you !
W
Catalin Bombea said
There is a way to use regular expressions to match complex patterns in power query, if you have messy data.Here is the function I am using:
<br />
<br />
(Text as text, Pattern as text)=><br />
let<br />
RunScript = Web.Page(<br />
""<br />
),<br />
Matches = try RunScript{0}[Data]{0}[Children]{1}[Children]{0}[Text] otherwise null<br />
in<br />
Matches<br />
<br />The query is simple, just take the text from a table, the pattern from another table and pass them to the function:
<br />
<br />
let<br />
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],<br />
Pattern = Excel.CurrentWorkbook(){[Name="Pattern"]}[Content]{0}[Pattern],<br />
#"Added Custom" = Table.AddColumn(Source, "Matches", each FindMatches([Text],Pattern))<br />
in<br />
#"Added Custom"<br />
<br />You can specify in the pattern lots of conditions like: text can be at the beginning, at the end, might be delimited by some chars, and lots of complex scenarios.
Catalin Bombea said
There is a way to use regular expressions to match complex patterns in power query, if you have messy data.Here is the function I am using:
<br />
<br />
(Text as text, Pattern as text)=><br />
let<br />
RunScript = Web.Page(<br />
""<br />
),<br />
Matches = try RunScript{0}[Data]{0}[Children]{1}[Children]{0}[Text] otherwise null<br />
in<br />
Matches<br />
<br />The query is simple, just take the text from a table, the pattern from another table and pass them to the function:
<br />
<br />
let<br />
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],<br />
Pattern = Excel.CurrentWorkbook(){[Name="Pattern"]}[Content]{0}[Pattern],<br />
#"Added Custom" = Table.AddColumn(Source, "Matches", each FindMatches([Text],Pattern))<br />
in<br />
#"Added Custom"<br />
<br />You can specify in the pattern lots of conditions like: text can be at the beginning, at the end, might be delimited by some chars, and lots of complex scenarios.
wow Catalin, this is too complicated for you, that is simple for you
if you have time appreciate you can help to code it in my example and I will learn from there, just like previously I learned the Text function on search substrings from you, very useful
at the meant time will use replace "/" with "" haha
Power Query
Power Pivot
Xtreme Pivot Tables
Excel for Decision Making
Excel for Finance
Excel Analysis Toolpak
Power BI
Excel
Word
Outlook
Excel Expert
Excel Customer Service
PowerPoint
November 8, 2013
Power Query
Power Pivot
Xtreme Pivot Tables
Excel for Decision Making
Excel for Finance
Excel Analysis Toolpak
Power BI
Excel
Word
Outlook
Excel Expert
Excel Customer Service
PowerPoint
November 8, 2013
If you want to learn regular expressions, you can start here: https://regex101.com/r/wQ4mK9/1
They provide also a playground for JavaScript expressions, used in the power query function.
[A-Z]{2,3}\\(?[A-Z]{1}\\)?[0-9]{3}([A-Z]{1})?([0-9]{1})?
You can see the groups in different colors (i used 5 groups):
first group says that there can be 2 or 3 uppercase letters
second group says that there can be an uppercase letter in paranthesis, the ? says that it might be missing
third group: 3 digits always
4-th group: there can be an uppercase letter, might me missing on some entries (that's what ? symbol means)
group 5: there can be 1 uppercase letter, but might be missing sometimes (?)
1 Guest(s)