Maison >développement back-end >tutoriel php >Apprenez les bases des expressions régulières
Cet article parle des bases des expressions régulières de JavaScript Si vous n'êtes pas familier avec les expressions régulières JavaScript, vous pouvez simplement venir les apprendre. de JavaScript. Expressions régulières, pour ceux qui ne les connaissent pas, jetons-y un coup d'œil ensemble !
Aujourd'hui, j'ai appris l'objet RegExp lorsque j'apprenais le javascript , j'en ai profité pour apprendre les expressions régulières. Je n'y ai jamais été exposé auparavant, j'en ai donc profité pour les apprendre.
Site Web de référence : Tutoriel d'introduction de 30 minutes sur les expressions régulièresCliquez pour ouvrir le lien
Les expressions régulières sont utilisées pour exprimer des règles de correspondance chaînes .
Les métacaractères sont spécifiés dans les expressions régulières Un symbole spécial ajouté à expressions régulières pour remplacer certaines règles.
b | 表示单词的开始或结束 |
. | 表示除换行以外的任意字符 |
* | 表示*前面出现的任意个数的该字符,例如a*,表示前面有任意个数的a(重复0次或多次) |
+ | signifie n'importe quel nombre du caractère qui apparaît avant +, tel que a+, signifie qu'il y a n'importe quel nombre de caractères avant un (répéter 1 ou plusieurs fois)
|
? | 重复0或1次 |
{n} | 重复n次 |
{n, } | 重复大于等于n次 |
{n, m} | 重复n到m次 |
d | 表示一个0-9的数字 |
w | 匹配字母或数字或下划线或汉字 |
s | 匹配任意的空白符,包括空格、制表符、换行符、中文全角空格等 |
^ | 匹配字符串的开始 |
& | 匹配字符串的结束 |
Partez directement de l'exemple :
Exemple 1 : Quand je veux faire correspondre le mot bonjour, l'expression régulière écrite L'expression (règle de correspondance) est : bonjour
Cela correspondra à tous les mots contenant bonjour, tels que : bonjourmonde correspond également, mais si vous voulez uniquement faire correspondre bonjour, alors vous avez besoin pour utiliser le métacaractère b pour séparer bonjour avant et après pour former un mot séparé bonjour, alors l'expression régulière doit être : bhellob
Exemple 2 : Quand tu veux Si le bonjour que vous recherchez est suivi d'un monde à n'importe quel caractère, vous devez utiliser les métacaractères et *. L'expression régulière est bhellob.*worldb
Exemple 3 : Lorsque vous souhaitez faire correspondre des numéros de téléphone comme 021-xxxxxxx, vous devez utiliser 021-ddddddd, où "021-" est un caractère simple qui ne représente aucun signification particulière, et ce qui suit Le d utilisé est un métacaractère. Cette expression régulière peut être abrégée en 021-d{7}, ce qui signifie que d est répété 7 fois.
Exemple 4 : Faire correspondre 1 ou plusieurs nombres consécutifs, d+
Exemple 5 : Faire correspondre des mots commençant par a, baw*b
Exemple 6 : Faire correspondre un numéro QQ de 5 à 12 chiffres, ^d{5, 12}&
Si la chaîne que vous souhaitez rechercher contient des métacaractères, vous devez les ajouter devant les métacaractères pour convertir les métacaractères en caractères ordinaires.
( représente un échappement (,. ? signifie qu'il se répète 0 ou 1 fois, d signifie deux nombres, [), -] signifie la classe de caractères de ) et -, ? signifie qu'il se répète 0 ou 1 fois, suivi de 8 chiffres.
(?0d{2}[), -]?d{8} est comme ces expressions régulières peuvent correspondre à des chaînes incorrectes telles que (01012345678 ou (010-12345678). Dans de tels cas, vous pouvez utiliser des conditions de branchement. Les conditions de branchement sont similaires à la logique ou || dans js, et elles sont toutes court-circuitées Opérateur , se termine lorsqu'une condition peut être jugée de gauche à droite
Pour la situation ci-dessus, elle peut s'écrire (0d{2})d{8. } |0d{2}-d{8}|(0d{2})d{8}
Lorsque vous avez besoin de trouver des caractères qui ne peuvent pas être facilement définis, tels que des caractères autres que xxx, vous devez l'utiliser Antony
W |
|
||||||||||||
D | Correspond à tout caractère qui n'est pas un nombre | ||||||||||||
B | Faire correspondre n'importe quel caractère qui n'est pas le début ou la fin d'un mot | ||||||||||||
S | Correspond à tout caractère qui n'est pas un espace | ||||||||||||
[^x] | Correspond à tout sauf x caractères autres que aeiou | ||||||||||||
[^aeiou] | Correspond à des caractères autres que aeiou |
Le contenu de cette partie correspond au regroupement précédent lorsque nous utilisons () pour regrouper les caractères, nous pourrons continuer à faire référence à ce regroupement par numérotation plus tard. Pour le regroupement par (), le regroupement commence à 1 dans l'ordre d'apparition de (. Par exemple, l'expression régulière b(w+)s+1b peut être utilisée. pour correspondre aux occurrences répétées, les mots, tels que go go, etc., font ici référence au regroupement apparaissant précédemment via 1.
Les autres syntaxes de référence arrière impliquées sont :
(exp) | 匹配exp,并捕获当前内容到自动的分组里 |
(? |
匹配exp,并捕获当前内容并分配组名为name |
(?:exp) | 匹配exp,不为捕获的内容分配组名 |
est utilisée pour trouver la partie avant ou après une certaine partie du contenu mais n'inclut pas le contenu.
L'expression régulière (?=exp) signifie affirmer que la partie qui apparaît plus tard peut correspondre à l'expression exp. Par exemple, bw+(?=ingb) correspond à la partie avant des mots se terminant par ing. Par exemple, lors de la recherche de Je danse et chante, danse et chant seront mis en correspondance (puisqu'il y a w+, ils ne seront pas mis en correspondance avec s).
L'expression régulière (?<=exp) signifie affirmer que la partie précédente peut correspondre à l'expression exp. Par exemple, (?<=bre)w+b correspondra à la seconde moitié du mot commençant par re. Par exemple, lors d'une recherche de lecture, ading sera mis en correspondance. .
Si vous souhaitez ajouter une virgule tous les trois chiffres d'un nombre long, par exemple en ajoutant une virgule à 123456789, vous pouvez utiliser l'expression régulière ((?<=d) d{3 })+b, le résultat de la recherche est 234567890 (je ne comprends pas cette partie des règles de recherche...)
L'exemple suivant utilise deux assertions en même temps time (?=
De manière générale, le but de l'assertion de largeur nulle est de déterminer le point de départ ou le point d'arrivée des caractères correspondants selon certaines règles.
Comme mentionné précédemment, utilisez des antonymes pour trouver des caractères qui ne sont pas un certain caractère ou ne sont pas dans un certain caractère.
Par exemple, si vous souhaitez trouver un mot où la lettre q apparaît mais n'est pas suivie de u. Vous pourriez écrire bq[^u]w*b. Mais pour une telle expression, une erreur se produira lorsque q apparaîtra à la fin d'un mot, car [^u] correspondra au caractère séparateur du mot, qui correspondra alors au mot suivant, qui correspondra à des caractères tels que les combats en Irak. . chaîne.
Afin de résoudre le problème d'occupation des antonymes, nous pouvons utiliser une assertion négative de largeur nulle, car elle ne correspond qu'à une seule position et ne consomme aucun caractère. L'expression ci-dessus peut être écrite sous la forme bq(?!u)w*b.
De même, nous utilisons (?
Un exemple plus complexe : (?<=<(w+)>).*(?=1>)
Lorsque vous voyez le précédent (?<=) et le suivant (?=), vous savez que le recto et le verso sont des assertions de largeur nulle, et < ;(w+)> ; représente la balise html. Si la précédente est
12. Commentaires
Contenir des commentaires via la syntaxe (?#comment), Par exemple, 2[0-4]d(?#200-249).
13. Cupidité et paresse
Semblable au drapeau en js, il existe l'insensibilité à la casse, le mode multi-ligne, le mode global, etc.
Cette partie consiste à traiter le problème de correspondance, par exemple, si vous souhaitez faire correspondre l'expression mathématique ( 5*3))) (5*3) ne peut pas simplement être écrit sous la forme (.*), car cela correspondra à l'expression entière. Ensuite, la stratégie de correspondance à adopter est similaire au problème de correspondance entre parenthèses que nous avons appris. Utilisez la pile pour le résoudre. Lorsque vous rencontrez (appuyez sur la pile, rencontrez) un éclatement de la pile, si la dernière pile est vide, cela signifie que la pile est vide. les parenthèses dans l'expression correspondent complètement. Si elle n'est pas vide, le moteur d'expression régulière fera marche arrière pour que les parenthèses correspondent.
Recommandations associées :
Comment utiliser les expressions régulières en JS
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!