I have an input string like:
abc(123:456),def(135.666:3434.777),ghi("2015-06-07T09:01:05":"2015-07-08")
Basically, it is (naive idea with regex):
[a-zA-Z0-9] (((number)|(quoted datetime)):((number)|(quoted datetime)))(,[a-zA-Z0-9] (((number)|(quoted datetime)):((number)|(quoted datetime)))) ?
How can I make a regex pattern in Java to validate that the input string follows this pattern and then I can extract the values [a-zA-Z0-9] and ((number)|(quoted datetime)):((number)|(quoted datetime)) from them?
CodePudding user response:
You can use
(\w )\((\d (?:\.\d )?|\"[^\"]*\"):(\d (?:\.\d )?|\"[^\"]*\")\)
See the regex demo.
In Java, it can be declared as:
String regex = "(\\w )\\((\\d (?:\\.\\d )?|\"[^\"]*\"):(\\d (?:\\.\\d )?|\"[^\"]*\")\\)";
Details:
(\w )- Group 1: one or more word chars\(- a(char(\d (?:\.\d )?|\"[^\"]*\")- Group 2: one or more digits optionally followed with.and one or more digits, or", zero or more chars other than"and then a"char:- a colon(\d (?:\.\d )?|\"[^\"]*\")- Group 3: one or more digits optionally followed with.and one or more digits, or", zero or more chars other than"and then a"char\)- a)char
