Heim  >  Artikel  >  Java  >  Java verwendet reguläre Ausdrücke, um die Analyse von Zeit- und Datumsbeurteilungsoperationen zu implementieren

Java verwendet reguläre Ausdrücke, um die Analyse von Zeit- und Datumsbeurteilungsoperationen zu implementieren

黄舟
黄舟Original
2017-10-12 10:27:051864Durchsuche

In diesem Artikel werden hauptsächlich die gängigen Zeit- und Datumsbeurteilungsoperationen in Java basierend auf regulären Ausdrücken vorgestellt. Er erklärt kurz die Bedeutung gängiger Metazeichen in regulären Ausdrücken und analysiert die Beurteilung gängiger Datums- und Zeitformate in Java basierend auf regulären Ausdrücken In Form von Beispielen können sich bedürftige Freunde auf

beziehen. Dieser Artikel beschreibt die gängigen Beurteilungsoperationen von Zeit und Datum basierend auf regulären Java-Ausdrücken. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Kürzlich muss ich ein Geschäft abschließen, das den vom Benutzer eingegebenen Zeit- und Datumstyp bestimmt, um entsprechende Vorgänge auszuführen. Natürlich sind reguläre Ausdrücke unverzichtbar, um diese Funktion zu realisieren. Wenn Sie reguläre Ausdrücke verbessern, ist ihre Verwendung eigentlich sehr einfach. Sie müssen sich nur dieses Formular merken und es flexibel ausführen.

+ Entspricht dem vorhergehenden Unterausdruck null oder einmal " in „does“. ? entspricht {0,1}. 🎜> passen zu jedem einzelnen Zeichen außer „n“. Verwenden Sie ein Muster wie „[sS]“ Vergleichen Sie das Muster und erhalten Sie diese Übereinstimmung. Die erhaltene Übereinstimmung kann aus der generierten Matches-Sammlung mithilfe der SubMatches-Sammlung in VBScript und dem Attribut $0...$9 in JScript abgerufen werden. Um Klammerzeichen zuzuordnen, verwenden Sie „(“ oder „)“. (?:pattern) stimmt mit dem Muster überein, erhält aber nicht das passende Ergebnis, was bedeutet, dass es sich um eine nicht erhaltende Übereinstimmung handelt und nicht für die spätere Verwendung gespeichert wird. Dies ist nützlich, wenn Sie Teile eines Musters mit dem oder-Zeichen „(|)“ kombinieren. Beispielsweise ist „industr(?:y|ies)“ ein einfacherer Ausdruck als „industry|industries“. (?=pattern) Positive positive Suche, Übereinstimmung mit der Suchzeichenfolge am Anfang eines beliebigen Zeichenfolgenübereinstimmungsmusters. Dies ist eine Nicht-Abruf-Übereinstimmung, d. h. die Übereinstimmung muss nicht zur späteren Verwendung abgerufen werden. Beispielsweise kann „Windows(?=95|98|NT|2000)“ mit „Windows“ in „Windows2000“ übereinstimmen, aber nicht mit „Windows“ in „Windows3.1“. Beim Vorabruf werden keine Zeichen verbraucht, d. h. nach einer Übereinstimmung beginnt die Suche nach der nächsten Übereinstimmung unmittelbar nach der letzten Übereinstimmung und nicht nach dem Zeichen, das den Vorabruf enthält. (?!pattern)Vorwärtsnegative Suche, wobei die Suchzeichenfolge am Anfang jeder Zeichenfolge abgeglichen wird, die nicht mit dem Muster übereinstimmt. Dies ist eine Nicht-Abruf-Übereinstimmung, d. h. die Übereinstimmung muss nicht zur späteren Verwendung abgerufen werden. Beispielsweise kann „Windows(?!95|98|NT|2000)“ mit „Windows“ in „Windows3.1“ übereinstimmen, aber nicht mit „Windows“ in „Windows2000“. (?<=pattern)Die umgekehrte positive Vorprüfung ähnelt der vorwärts gerichteten positiven Vorprüfung, jedoch in die entgegengesetzte Richtung. Beispielsweise kann „(?<=95|98|NT|2000)Windows“ mit „Windows“ in „2000Windows“ übereinstimmen, aber nicht mit „Windows“ in „3.1Windows“. (?x|y entspricht x oder y. Beispielsweise kann „z|food“ mit „z“ oder „food“ übereinstimmen. oder „Essen“.[^a-z]Negativzeichenbereich. Entspricht jedem Zeichen, das nicht im angegebenen Bereich liegt. „[^a-z]“ entspricht beispielsweise jedem Zeichen, das nicht im Bereich „a“ bis „z“ liegt. b entspricht einer Wortgrenze, die sich auf die Position zwischen einem Wort und einem Leerzeichen bezieht. Beispielsweise kann „erb“ mit „er“ in „never“ übereinstimmen, aber nicht mit „er“ in „verb“. B entspricht Nicht-Wortgrenzen. „erB“ entspricht dem „er“ in „verb“, aber nicht dem „er“ in „never“. cx entspricht dem durch x angegebenen Steuerzeichen. cM entspricht beispielsweise einem Strg-M- oder Wagenrücklaufzeichen. Der Wert von x muss A-Z oder a-z sein. Andernfalls behandeln Sie c als wörtliches „c“-Zeichen. d entspricht einem numerischen Zeichen. Entspricht [0-9]. D entspricht einem nicht numerischen Zeichen. Entspricht [^0-9]. f entspricht einem Formularvorschub. Entspricht x0c und cL. n entspricht einem Zeilenumbruchzeichen. Entspricht x0a und cJ. r entspricht einem Wagenrücklaufzeichen. Entspricht x0d und cM. s entspricht jedem Leerzeichen, einschließlich Leerzeichen, Tabulatoren, Formularvorschüben usw. Entspricht [fnrtv]. S entspricht jedem Zeichen, das kein Leerzeichen ist. Entspricht [^ fnrtv]. t entspricht einem Tabulatorzeichen. Entspricht x09 und cI. v entspricht einem vertikalen Tabulatorzeichen. Entspricht x0b und cK. w entspricht jedem Wortzeichen, einschließlich eines Unterstrichs. Entspricht „[A-Za-z0-9_]“. W entspricht jedem Nicht-Wort-Zeichen. Entspricht „[^A-Za-z0-9_]“. xn entspricht n, wobei n der hexadezimale Escape-Wert ist. Der hexadezimale Escape-Wert muss genau zwei Ziffern lang sein. Beispielsweise entspricht „x41“ „A“. „x041“ entspricht „x04&1“. Die ASCII-Kodierung kann in regulären Ausdrücken verwendet werden. num stimmt mit num überein, wobei num eine positive ganze Zahl ist. Ein Verweis auf die erhaltene Übereinstimmung. Beispielsweise entspricht „(.)1“ zwei aufeinanderfolgenden identischen Zeichen. n identifiziert einen oktalen Escape-Wert oder eine Rückreferenz. n ist eine Rückwärtsreferenz, wenn vor n mindestens n abgerufene Unterausdrücke stehen. Andernfalls, wenn n eine Oktalzahl (0-7) ist, dann ist n ein oktaler Escape-Wert. nmIdentifiziert einen oktalen Escape-Wert oder eine Rückreferenz. Wenn vor nm mindestens nm get-Unterausdrücke stehen, handelt es sich bei nm um eine Rückwärtsreferenz. Wenn vor nm mindestens n steht, dann ist n eine Rückwärtsreferenz, gefolgt vom Literal m. Wenn keine der vorherigen Bedingungen erfüllt ist und n und m beide Oktalzahlen (0-7) sind, stimmt nm mit dem oktalen Escape-Wert nm überein. nmlWenn n eine Oktalzahl (0-7) ist und m und l beide Oktalziffern (0-7) sind, stimmen Sie mit dem oktalen Escape-Wert überein nml. un entspricht n, wobei n ein Unicode-Zeichen ist, das als vier Hexadezimalziffern dargestellt wird. Beispielsweise entspricht u00A9 dem Copyright-Symbol (©).

那么利用上面的规则就可以完成日期时间类型的判断。下面的代码可以完成这样功能。


public static boolean isDateTime(String datetime){
  Pattern p = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1][0-9])|([2][0-4]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
  return p.matcher(datetime).matches();
}

通过上面的代码我们可以判断日期时间类型,而且它还可以判断纯日期类型,支持的格式为“YYYY-MM-DD HH:mm:ss”和“YYYY-MM-DD”。

当然如果是仅仅判断“YYYY-MM-DD”类型的话,就用下面的代码:


public static boolean isDate(String date){
  Pattern p = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))?$");
  return p.matcher(date).matches();
}

那么我们如果是要判断“HH:mm:ss”类型就需要用下面的代码来完成对这样的类型的判断。

代码如下:


public static boolean isTime(String time){
  Pattern p = Pattern.compile("((((0?[0-9])|([1][0-9])|([2][0-4]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
  return p.matcher(time).matches();
}

有了上面的三个代码,就可以完成对日期和时间的判断了。

Metazeichen Beschreibung
Markieren Sie das nächste Zeichen als Sonderzeichen oder A-Literal Zeichen, eine Rückreferenz oder ein oktales Escape-Zeichen. Beispielsweise entspricht „n“ dem Zeichen „n“. „\n“ entspricht einem Zeilenumbruchzeichen. Die Sequenz „\“ entspricht „“ und „(“ entspricht „(“.
^ entspricht dem Anfang der Eingabezeichenfolge. Wenn das RegExp-Objekt festgelegt ist Das mehrzeilige Attribut ^ entspricht auch der Position nach „n“ oder „r“
$ entspricht der Endposition der Eingabezeichenfolge, sofern festgelegt Entspricht auch der Position vor „n“ oder „r“.
* entspricht dem vorhergehenden Unterausdruck null oder mehrmals. zoo". *Entspricht {0,}
stimmt ein oder mehrere Male mit dem vorherigen Unterausdruck überein. . Beispielsweise kann „zo+“ mit „zo“ übereinstimmen, aber nicht mit „z“ . + entspricht {1,} ?
{n} n ist eine nicht negative Ganzzahl, die eine bestimmte Anzahl von Malen übereinstimmt. Zum Beispiel , „o{2}“ kann nicht mit dem „o“ in „Bob“ übereinstimmen, kann jedoch mit zwei o in „food“ übereinstimmen. negative Ganzzahl. Beispielsweise kann „o{. 2,}“ nicht mit dem „o“ in „Bob“ übereinstimmen, aber es kann mit allen „o“ in „foooood“ übereinstimmen. „o{0,}“ ist äquivalent zu „o*“. ;=m stimmt mindestens n-mal überein. Beispielsweise entspricht „o{1,3}“ den ersten drei o in „foooood“. . Beachten Sie das Komma und die beiden Zahlen zwischen
? , wenn diesem Zeichen ein anderer Begrenzer (*,+,?, {n},{n, }, {n,m}), der Abgleichsmodus ist nicht gierig. Der nicht gierige Modus entspricht so wenig der gesuchten Zeichenfolge wie möglich, während der standardmäßige gierige Modus so viel wie möglich mit der gesuchten Zeichenfolge übereinstimmt Zeichenfolge wie möglich. Beispielsweise entspricht „o?“ einem einzelnen „o“, während „o+“ allen „o“s entspricht . Punkte
(Muster)
Umgekehrte negative Vorprüfung, ähnlich der vorwärts gerichteten negativen Vorprüfung, außer in der entgegengesetzten Richtung. Beispiel: „(?
[xyz] Zeichensatz. Entspricht einem der enthaltenen Zeichen. Beispielsweise würde „[abc]“ mit dem „a“ in „plain“ übereinstimmen.
[^xyz] Eine Reihe von Zeichen mit negativem Wert. Entspricht jedem Zeichen, das nicht enthalten ist. Beispielsweise würde „[^abc]“ mit „plin“ in „plain“ übereinstimmen.
[a-z] Zeichenbereich. Entspricht jedem Zeichen innerhalb des angegebenen Bereichs. „[a-z]“ entspricht beispielsweise jedem Kleinbuchstaben im Bereich „a“ bis „z“.
Hinweis: Nur wenn der Bindestrich innerhalb der Zeichengruppe und zwischen zwei Zeichen steht, kann er den Zeichenbereich darstellen; wenn er am Anfang der Zeichengruppe steht, kann er nur den Bindestrich selbst darstellen 🎜>

Das obige ist der detaillierte Inhalt vonJava verwendet reguläre Ausdrücke, um die Analyse von Zeit- und Datumsbeurteilungsoperationen zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn