Is there anyway you can do regex match group using sed like java regex pattern/match/group?
if i have string like
test-artifact-201251-balbal-0.1-SNAPSHOT.jar
how do I use sed just to get the result like:
test-artifact-0.1-SNASHOT.jar
I am wondering does sed allow you to do something like java regex, you define the pattern like:
([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)([.]*SNAPSHOT.jar)
and then you can get the results as an array like:
test-artifact- 201251- balbal- 0.1-SNAPSHOT.jar
Grouping can be used in sed like normal regular expression. A group is opened with “\(” and closed with “\)”. Grouping can be used in combination with back-referencing. Back-reference is the re-use of a part of a Regular Expression selected by grouping.
The sed command has longlist of supported operations that can be performed to ease the process of editing text files. It allows the users to apply the expressions that are usually used in programming languages; one of the core supported expressions is Regular Expression (regex).
What is Group in Regex? A group is a part of a regex pattern enclosed in parentheses () metacharacter. We create a group by placing the regex pattern inside the set of parentheses ( and ) . For example, the regular expression (cat) creates a single group containing the letters 'c', 'a', and 't'.
You have to escape parentheses to group expressions:
\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)
And use them with \1
, \2
, etc.
EDIT: Also note just before SNAPSHOT
that [.]
will not match. Inside brackets .
is literal. It should be [0-9.-]*
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With