Il y a une chaîne, comment vérifier s'il contient des caractères y et f ? La manière la plus sombre est :
Programme 1 : Je sais si, pour les instructions et charAt()
class Test{ public static void main(String args[]) { String str="For my money, the important thing "+"about the meeting was bridge-building"; char x='y'; char y='f'; boolean result=false; for(int i=0;i<str.length;i++){ char z=str.charAt(i); //System.out.println(z); if(x==z||y==z) { result=true; break; } else result=false; } System.out.println(result); } }
Cela semble intuitif, mais cette méthode est difficile à gérer avec un travail complexe. Par exemple, demandez-vous s'il y a dans un morceau de texte ? Y a-t-il quelque chose ou quelque chose, etc. C'est un sale boulot.
Paquet java.util.regex de Java
Selon l'idée orientée objet, la chaîne que vous souhaitez interroger telle que is, thing ou ting est encapsulée dans un objet, et cet objet est utilisé comme modèle pour faire correspondre un paragraphe de texte devient plus naturel. L'élément utilisé comme modèle est l'expression régulière qui sera discutée ci-dessous. Ignorons la complexité et regardons un exemple : Programme 2 : Je ne comprends pas. Pouvons-nous jeter un oeil d'abord ?
import java.util.regex.*; class Regex1{ public static void main(String args[]) { String str="For my money, the important thing "+"about the meeting was bridge-building"; String regEx="a|f"; //表示a或f Pattern p=Pattern.compile(regEx); Matcher m=p.matcher(str); boolean result=m.find(); System.out.println(result); } }
Si str correspond à regEx, alors le résultat est vrai, sinon il est faux. Si vous souhaitez ignorer la casse lors de la recherche, vous pouvez écrire :
Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
Bien que je ne connaisse pas Pattern (template, pattern ) et les détails du Matcher (matcher), le programme se sent plus à l'aise si vous interrogez d'abord, puis interrogez chose ou ting, il suffit de modifier le modèle de modèle, au lieu de considérer les instructions if et for, ou via. charAt() .
1. Écrivez une chaîne spéciale - une expression régulière telle que a|f.
2. Compilez l'expression régulière dans un modèle : p
3. Utilisez le modèle p pour faire correspondre la chaîne str.
L'idée est claire, voyons maintenant comment Java la gère (les programmeurs Java ne peuvent pas utiliser ces classes avant JDK1.4.
Classe de modèles et recherche
①classe finale publique java .util.regex.Pattern est une expression compilée d'une expression régulière. L'instruction suivante créera un objet Pattern et l'attribuera au handle p : Pattern p=Pattern.compile(regEx);
Fait intéressant, le La classe Pattern est une classe finale et son constructeur est privé. Peut-être que quelqu'un vous a dit quelque chose sur les modèles de conception, ou vous pouvez vérifier les informations pertinentes vous-même. La conclusion ici est la suivante : la classe Pattern ne peut pas être héritée et nous ne pouvons pas créer la classe Pattern. via new.Object.
Par conséquent, dans la classe Pattern, deux méthodes statiques surchargées sont fournies, dont la valeur de retour est l'objet Pattern (référence), telles que :
public static Pattern compile(String regex) { return new Pattern(regex, 0); }
<.> Bien sûr, nous pouvons déclarer le handle de la classe Pattern, tel que Pattern p=null
②p.matcher(str) représente un matcher qui utilise le modèle p pour générer une chaîne str, et sa valeur de retour est Une référence à la classe Matcher, pourquoi avons-nous besoin de cette chose ? D'après l'idée naturelle, ne pouvons-nous pas renvoyer une valeur booléenne
Nous pouvons simplement utiliser la méthode suivante :
Copiez le code comme suit :
En fait, la méthode sans handle pour fusionner trois instructions. Aucun handle n'est souvent pas une bonne méthode. Regardons d'abord la classe Matcher. Regardons cet étrange
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il pourra aider tout le monde à prendre conscience du pouvoir des expressions régulières. Pour plus d'articles liés à la correspondance de chaînes en Java (basés sur des règles régulières), veuillez faire attention au site Web PHP chinois !