I tried (. ?):(. )((?::). )?
to test below:
androidx.hilt:hilt-compiler
- group1: androidx.hilt
- group2: hilt-compiler
- group3:
androidx.hilt:hilt-compiler:1.2.3
- group1: androidx.hilt
- group2: hilt-compiler:1.2.3
- group3:
I expect second one to be
- group1: androidx.hilt
- group2: hilt-compiler
- group3: 1.2.3
I have tried different regular expression but none of them works.
CodePudding user response:
You might write the pattern as:
^([^:\n] ):([^:\n] )(?::([^\n:] ))?$
Explanation
^
Start of string([^:\n] )
Group 1, match 1 chars other than : or a newline:([^:\n] )
Match:
followed by group 2 matching 1 chars other than : or a newline(?:
Non capture group:([^\n:] )
Match:
followed by group 3 matching 1 chars other than : or a newline
)?
Close non capture group and make it optional$
End of string