# Wildcard on String Matching

**URL:** <https://forum.inductiveautomation.com/t/wildcard-on-string-matching/23256>\
**Category:** Ignition\
**Created:** [March 12, 2019, 4:59pm UTC](https://forum.inductiveautomation.com/t/wildcard-on-string-matching/23256 "2019-03-12T16:59:44Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![rvw](https://avatars.discourse-cdn.com/v4/letter/r/839c29/32.png) [@rvw](https://forum.inductiveautomation.com/u/rvw)\
**Post date:** [March 12, 2019, 4:59pm UTC](https://forum.inductiveautomation.com/t/wildcard-on-string-matching/23256/1 "2019-03-12T16:59:44Z")

</div>

I have a opc string tag that may contain “BC0”, “BC1”, “BC2”, “TQ0”, “TQ1”, “TQ2”… etc. depending on the instructions that was selected by the user.

I want to script something on Ignition when the tag says “BC”, TQ, or UC.

an example of my script would be: if({tag} = “BC(wildcard?)” , 1,0)

I am just trying to minimize my scripting and avoiding writing the script like:  
if({tag} = “BC0” , 1,0 &&  
if({tag} = “BC1” , 1,0) &&  
if({tag} = “BC2” , 1,0)))

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![nick.schuetz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nick.schuetz/32/6160_2.png) [@nick.schuetz](https://forum.inductiveautomation.com/u/nick.schuetz)\
**Post date:** [March 12, 2019, 5:07pm UTC](https://forum.inductiveautomation.com/t/wildcard-on-string-matching/23256/2 "2019-03-12T17:07:49Z")

</div>

You can use something like this.

```auto
if({tag} like 'BC%', 1, 0)

```

---

<div class="post-metadata">

**Author:** ![rvw](https://avatars.discourse-cdn.com/v4/letter/r/839c29/32.png) [@rvw](https://forum.inductiveautomation.com/u/rvw)\
**Post date:** [March 12, 2019, 5:13pm UTC](https://forum.inductiveautomation.com/t/wildcard-on-string-matching/23256/3 "2019-03-12T17:13:40Z")

</div>

That worked! Thanks! I did not know that I can use “like”

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 12, 2019, 5:42pm UTC](https://forum.inductiveautomation.com/t/wildcard-on-string-matching/23256/4 "2019-03-12T17:42:55Z")

</div>

> [@nick.schuetz](#):
>
> if({tag} like 'BC%', 1, 0)

Yeah, the `like` operator is very situational but very useful. It's also worth noting - you don't actually need an `if` statement if your only return is 1/0 (ie, true/false) - you can just use chain boolean operators directly:  
`{tag} like 'BC%' || {tag} like 'TQ%'` will return a true value if either condition is met.

---

<div class="post-metadata">

**Author:** ![Caleb\_Bohon](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/caleb_bohon/32/3293_2.png) [@Caleb\_Bohon](https://forum.inductiveautomation.com/u/Caleb_Bohon)\
**Post date:** [March 12, 2019, 7:45pm UTC](https://forum.inductiveautomation.com/t/wildcard-on-string-matching/23256/5 "2019-03-12T19:45:03Z")

</div>

This appears to be expression language rather than actual python scripting, right?

---

<div class="post-metadata">

**Author:** ![MMaynard](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mmaynard/32/3366_2.png) [@MMaynard](https://forum.inductiveautomation.com/u/MMaynard)\
**Post date:** [March 12, 2019, 8:07pm UTC](https://forum.inductiveautomation.com/t/wildcard-on-string-matching/23256/6 "2019-03-12T20:07:23Z")

</div>

> [@rvw](#):
>
> “BC0”, “BC1”, “BC2”, “TQ0”, “TQ1”, “TQ2”

What about doing something like

> tag = "BlahBlahBC1BlahBlah"  
> a=['BC0','BC1','BC2','TQ0','TQ1','TQ2']  
> Found=1 if any(x in tag for x in a) else 0  
> print Found

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 12, 2019, 8:24pm UTC](https://forum.inductiveautomation.com/t/wildcard-on-string-matching/23256/7 "2019-03-12T20:24:23Z")

</div>

> [@Caleb\_Bohon](#):
>
> This appears to be expression language rather than actual python scripting, right?

Yes - the OP used 'scripting' but has an example that looks more like expression syntax, so I rolled with it.

> [@MMaynard](#):
>
> What about doing something like
> 
> > tag = “BlahBlahBC1BlahBlah”  
> > a=[‘BC0’,‘BC1’,‘BC2’,‘TQ0’,‘TQ1’,‘TQ2’]  
> > Found=1 if any(x in tag for x in a) else 0  
> > print Found

This certainly works, although it's still an unnecessary if; the following has the exact same result:

```auto
tag = “BlahBlahBC1BlahBlah”
a=[‘BC0’,‘BC1’,‘BC2’,‘TQ0’,‘TQ1’,‘TQ2’]
print any(x in tag for x in a)

```
