Need regular expression to extract month,day,time i.e Sep 14 16:08
Need regular expression to extract month,day,time i.e Sep 14 16:08
yes this is C#. The script is reading a txt file containing the line string.
Giving the string below I need to be able to extract the month,day and time such as "Sep 14 16:08":
-rw-r--r-- 1 user001 user001 0 Sep 14 16:08 20180913/labc/0/20180913_02300
I have researched and found the following:
@"(?i)([d]1,2(s)?(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))(s)?[d]1,2");
@"(?i)([d]1,2(s)?(January|Jan|February|feb|March|mar|April|Apr|May|June|July|August|Aug|September|Sep|October|Oct|November|Nov|December|Dec))
(January|Jan|February|feb|March|mar|April|Apr|May|June|July|August|Aug|September|Sep|October|Oct|November|Nov|December|Dec)(s)?[d]1,2");
(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)s+d1,2
but I can't seem to put together something that will extract "Month Day XX:XX"
Thank you all
Better would be to stat the file directly, and use the system structures to get the data rather than parsing the output of
ls -l
.– Tanktalus
Sep 18 '18 at 15:43
ls -l
The
@"..."
pattern strongly suggests this is C# code. If your program is running on a Linux box, @Tanktalus's suggestion is right: Get the file stats directly rather than trying to parse the output of ls
. But if your code is running on Windows, and/or you're just consuming text outputted by something outside your control, like a remote script, you'll have to use some kind of regex parsing like this. Can you tell us more about your scenario so we can provide answers closer to your needs?– Sean Werkema
Sep 18 '18 at 15:47
@"..."
ls
yes this is C#. The script is reading a txt file containing the line string.
– Max
Sep 18 '18 at 16:13
to add to @Tanktalus comment if it's to parse ls output, it's not always consustent, for older dates hour:minutes can be replaced with year, also
LANG
environment variable should be considered– Nahuel Fouilleul
Sep 18 '18 at 16:26
LANG
2 Answers
2
I have rewritten you RegEx, so that it matches what you want:
(?:(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))sd1,2sd1,2:d1,2sd4
What it does is first find the month,
then a Space followed by one or two digits
then a Space followed by one or two digits
then a colon followed by one or two digits
then a Space followed by four digits.
You can try it out here
yes I think you got it bud. Thank you!!!!
– Max
Sep 18 '18 at 16:14
You could use ranges to match the days and the time. Note that the match does not validate the date itself.
b(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (?:3[01]|[12][0-9]|0?[1-9]) (?:2[0-3]|[01]?[0-9]):(?:[0-5]?[0-9])b
b(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (?:3[01]|[12][0-9]|0?[1-9]) (?:2[0-3]|[01]?[0-9]):(?:[0-5]?[0-9])b
That would match
b
(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)
(?:3[01]|[12][0-9]|0?[1-9])
(?:2[0-3]|[01]?[0-9]):(?:[0-5]?[0-9])
b
Regex demo
Thanks for contributing an answer to Stack Overflow!
But avoid …
To learn more, see our tips on writing great answers.
Required, but never shown
Required, but never shown
By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy
Are you looking for the date only in that example string?
– dawg
Sep 18 '18 at 15:41