Dada una string str , la tarea es verificar si la string es una hora válida en formato de 12 horas o no mediante el uso de expresiones regulares .
La hora válida en formato de 12 horas debe cumplir las siguientes condiciones:
- Debe comenzar desde 1, 2, … 9 o 10, 11, 12.
- Debe ir seguido de dos puntos (:).
- Debe ir seguido de dos dígitos entre 00 y 59.
- Solo debe permitir un espacio en blanco, aunque esto es opcional.
- Debe terminar con ‘am’, ‘pm’ o ‘AM’, ‘PM’.
Ejemplos:
Entrada: str = 12:15 AM
Salida: verdadero
Explicación: La string dada cumple todas las condiciones mencionadas anteriormente.Entrada: str = 9:45PM
Salida: verdadero
Explicación: La string dada cumple todas las condiciones mencionadas anteriormente.Entrada: str = 1:15
Salida: falso
Explicación: La string dada no termina con ‘AM’ o ‘PM’, por lo tanto, no es una hora válida en formato de 12 horas.Entrada: str = 17:30 PM
Salida: falso
Explicación: La string dada no tiene horas entre 1 y 12, por lo tanto, no es una hora válida en formato de 12 horas.
Enfoque: este problema se puede resolver utilizando la expresión regular.
- Consigue la cuerda.
- Cree una expresión regular para verificar el tiempo en formato de 12 horas como se menciona a continuación:
regex = "(1[012]|[1-9]):[0-5][0-9](\\s)?(?i)(am|pm)";
- Dónde:
- ( representa el comienzo del grupo.
- 1[012]|[1-9] representa el inicio del tiempo con 10, 11, 12 o 1, 2, …. 9
- ) representa el final del grupo.
- : representa el tiempo debe ir seguido de dos puntos (:).
- [0-5][0-9] representa el tiempo seguido de 00 a 59.
- (\\s)? representa un espacio en blanco, el tiempo seguido de un espacio en blanco que es opcional.
- (?i) representa mayúsculas y minúsculas, ‘am’, ‘pm’ o ‘AM’, ‘PM’ son iguales respectivamente.
- (am|pm) representa el tiempo que debe terminar con ‘am’, ‘pm’ o ‘AM’, ‘PM’.
- Haga coincidir la string dada con la expresión regular, en Java esto se puede hacer usando Pattern.matcher() .
- Devuelve verdadero si la string coincide con la expresión regular dada; de lo contrario, devuelve falso.
A continuación se muestra la implementación del enfoque anterior:
Java
// Java program to validate the time in // 12-hour format using Regular Expression. import java.util.regex.*; class GFG { // Function to validate the time in 12-hour format. public static boolean isValidTime(String time) { // Regex to check valid time in 12-hour format. String regexPattern = "(1[012]|[1-9]):" + "[0-5][0-9](\\s)" + "?(?i)(am|pm)"; // Compile the ReGex Pattern compiledPattern = Pattern.compile(regexPattern); // If the time is empty // return false if (time == null) { return false; } // Pattern class contains matcher() method // to find matching between given time // and regular expression. Matcher m = compiledPattern.matcher(time); // Return if the time // matched the ReGex return m.matches(); } // Driver Code. public static void main(String args[]) { // Test Case 1: String str1 = "12:15 AM"; System.out.println(isValidTime(str1)); // Test Case 2: String str2 = "9:45PM"; System.out.println(isValidTime(str2)); // Test Case 3: String str3 = "1:15"; System.out.println(isValidTime(str3)); // Test Case 4: String str4 = "17:30"; System.out.println(isValidTime(str4)); } }
Python3
# Python3 program to validate the time in # 12-hour format using Regular Expression. import re # Function to validate the time in 12-hour format. def isValidTime(time) : # Regex to check valid time in 12-hour format. regexPattern = "(1[012]|[1-9]):"+ "[0-5][0-9](\\s)"+ "?(?i)(am|pm)"; # Compile the ReGex compiledPattern = re.compile(regexPattern); # If the time is empty # return false if (time == None) : return False; # re library contains search() method # to find matching between given time # and regular expression. # Return if the time # matched the ReGex if re.search(compiledPattern,time): return True else : return False # Driver Code. if __name__ == "__main__" : # Test Case 1: str1 = "12:15 AM"; print(isValidTime(str1)); # Test Case 2: str2 = "9:45PM"; print(isValidTime(str2)); # Test Case 3: str3 = "1:15"; print(isValidTime(str3)); # Test Case 4: str4 = "17:30"; print(isValidTime(str4)); # This code is contributed by AnkitRai01
C++
// C++ program to validate // time in 12-hour format // using Regular Expression #include <iostream> #include <regex> using namespace std; // Function to validate time in 12-hour format bool isValidTime(string str) { // Regex to check valid time in 12-hour format const regex pattern( "((([1-9])|(1[0-2])):([0-5])([0-9])(\\s)(A|P)M)"); // If the time in 12-hour format // is empty return false if (str.empty()) { return false; } // Return true if the time in 12-hour format // matched the ReGex if (regex_match(str, pattern)) { return true; } else { return false; } } // Driver Code int main() { // Test Case 1: string str1 = "12:15 AM"; cout << isValidTime(str1) << endl; // Test Case 2: string str2 = "9:45 PM"; cout << isValidTime(str2) << endl; // Test Case 3: string str3 = "1:15"; cout << isValidTime(str3) << endl; // Test Case 4: string str4 = "17:30"; cout << isValidTime(str4) << endl; return 0; } // This code is contributed by yuvraj_chandra
true true false false
Publicación traducida automáticamente
Artículo escrito por prashant_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA