regex – Using the star sign in grep

regex – Using the star sign in grep

The asterisk is just a repetition operator, but you need to tell it what you repeat. /*abc*/ matches a string containing ab and zero or more cs (because the second * is on the c; the first is meaningless because theres nothing for it to repeat). If you want to match anything, you need to say .* — the dot means any character (within certain guidelines). If you want to just match abc, you could just say grep abc myFile. For your more complex match, you need to use .*grep abc.*def myFile will match a string that contains abc followed by def with something optionally in between.

Update based on a comment:

* in a regular expression is not exactly the same as * in the console. In the console, * is part of a glob construct, and just acts as a wildcard (for instance ls *.log will list all files that end in .log). However, in regular expressions, * is a modifier, meaning that it only applies to the character or group preceding it. If you want * in regular expressions to act as a wildcard, you need to use .* as previously mentioned — the dot is a wildcard character, and the star, when modifying the dot, means find one or more dot; ie. find one or more of any character.

The dot character means match any character, so .* means zero or more occurrences of any character. You probably mean to use .* rather than just *.

regex – Using the star sign in grep

The star sign is only meaningful if there is something in front of it. If there isnt the tool (grep in this case) may just treat it as an error. For example:

*xyz    is meaningless
a*xyz   means zero or more occurrences of a followed by xyz

Leave a Reply

Your email address will not be published.