I have been trying to write a regex to pass for exactly this format:
"bob likes poo - whatever(&T(R)*HP#"
" \t \t bob likes poo - *^RFVOG(IBHUO)B"
but fail on:
"//bob likes poo - GV*(GF*("
"# \t bob likes poo - OHG(G(*"
"bob does not like poo G&((HOUIHBO:"
They key bit being.
The line does NOT start with comment characters(# or //), can have
blank spaces(space or tab), has to have something followed by
delimeter(" - "), followed by whatever.
The corner cases are:
1) " \t //this is still a comment - YGV^FV*"
should still fail.
2) " /i_am//_no_/comment - FG&*G*&G"
well, I have failed. which made me ask if we can specify somehow to contain some character but not others. for example
just means any character that is not a, b or c. but how would we say not abc but 123? we can't just put
because that will exclude them and can't do
because that will mean it has to have 123 after some character that is not a,b,c which is total of 4 chars instead of 1 we want. I have no idea if it is even possible. So there are 2 quetsions here in a sense.
my best bet so far is:
"[[:blank:]]*[^[:blank:]]+( - ).*"
this makes the format matching correct but does not account for the comments.
I have found the working solution. It works but it's ugly as hell:
"[[:blank:]]*([^[:blank:]#]([^/].*)?|[^[:blank:]#/].*)( - ).*"
if anyone knows how to make it nicer, please tell me.