26 lines
1.3 KiB
Python
26 lines
1.3 KiB
Python
import re
|
|
|
|
# List of timestamp patterns
|
|
timestamp_patterns = [
|
|
(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', '%Y-%m-%d %H:%M:%S'), # ISO 8601 Extended
|
|
(r'\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}', '%Y/%m/%d %H:%M:%S'), # ISO 8601 with slashes
|
|
(r'\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}', '%d/%m/%Y %H:%M:%S'), # European Date Format
|
|
(r'\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}', '%m-%d-%Y %H:%M:%S'), # US Date Format
|
|
(r'\d{8}_\d{6}', '%Y%m%d_%H%M%S'), # Compact Format
|
|
(r'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}', '%Y-%m-%dT%H:%M:%S'), # ISO 8601 Basic
|
|
(r'\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2}', '%d.%m.%Y %H:%M:%S'),# German Date Format
|
|
(r'\d{4}\d{2}\d{2} \d{2}:\d{2}:\d{2}', '%Y%m%d %H:%M:%S'), # Basic Format without Separators
|
|
(r'\d{1,2}-[A-Za-z]{3}-\d{4} \d{2}:\d{2}:\d{2}', '%d-%b-%Y %H:%M:%S'), # English Date Format with Month Name
|
|
(r'(?:19|20)\d{10}', '%Y%m%d%H%M'), # Compact Numeric Format
|
|
# Add more patterns as needed
|
|
]
|
|
|
|
def parse(text):
|
|
matches = []
|
|
for pattern, _ in timestamp_patterns:
|
|
for match in re.finditer(pattern, text):
|
|
timestamp_str = match.group()
|
|
start_pos, end_pos = match.span()
|
|
matches.append((timestamp_str, start_pos, end_pos))
|
|
|
|
return matches |