国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Backend-Entwicklung PHP-Tutorial Wie stimmen regul?re Ausdrucksmuster mit Zeichenfolgen überein?

Wie stimmen regul?re Ausdrucksmuster mit Zeichenfolgen überein?

Nov 30, 2017 am 09:14 AM
übereinstimmen Wie Ausdruck

正則表達式,又稱規(guī)則表達式。計算機科學的一個概念。正則表通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。許多程序設計語言都支持利用正則表達式進行字符串操作。本文我們就和大家分享正則表達式模式匹配字符串的基礎知識。

在實際項目中有個功能的實現(xiàn)需要解析一些特定模式的字符串。而在已有的代碼庫中,在已實現(xiàn)的部分功能中,都是使用檢測特定的字符,使用這種方法的缺點是:

邏輯上很容易出錯

很容易漏掉對一些邊界條件的檢查

代碼復雜難以理解、維護

性能差

????? 看到代碼庫中有一個cpp,整個cpp兩千多行代碼,有個方法里,光解析字符串的就有400余行!一個個字符對比過去,真是不堪入目。而且上面很多注釋都已經(jīng)過期,很多代碼的書寫風格也各不相同,基本可以判斷是過了很多人手的。? 在這種情況下,基本沒辦法還沿著這條老路走下去,自然而然就想到了使用正則表達式。

這篇文章可以說是一個總結(jié),把在書寫正則表達式的匹配字符串方面的基礎知識介紹一下。主要分為以下兩個個部分:

匹配字符串的基本規(guī)則

正則匹配、查找與替代

本文介紹的正則表達式規(guī)則是ECMAScript。使用的編程語言是C++。其他方面的不做介紹。

匹配字符串的基本規(guī)則

1. 匹配固定的字符串

regex e("abc");

2. 匹配固定字符串,不區(qū)分大小寫

regex e("abc", regex_constants::icase);

3. 匹配固定字符串之外多一個字符,不區(qū)分大小寫

regex e("abc.", regex_constants::icase);  // .  Any character except 
newline. 1個字符

4. 匹配0個或1個字符

regex e("abc?");    // ?  Zero or 1 preceding character. 
匹配?前一個字符

5. 匹配0個或多個字符

regex e("abc*");    // *  Zero or more preceding character. 
匹配*前一個字符

6. 匹配1個或多個字符

regex e("abc+");    // +  One or more preceding character. 
匹配+前一個字符

7. 匹配特定字符串中的字符

regex e("ab[cd]*");    // [...] Any character inside square brackets. 
匹配[]內(nèi)的任意字符

8. 匹配非特定字符串的字符

regex e("ab[^cd]*");    // [...] Any character not inside square 
brackets. 匹配非[]內(nèi)的任意字符

9. 匹配特定字符串,且指定數(shù)量

regex e("ab[cd]{3}"); // {n} 匹配{}之前任意字符,且字符個數(shù)為3個

10. 匹配特定字符串,指定數(shù)量范圍

regex e("ab[cd]{3,}");  // {n} 匹配{}之前任意字符,且字符個數(shù)為3個或3個以上
regex e("ab[cd]{3,5}");  // {n} 匹配{}之前任意字符,且字符個數(shù)為3個以上,5個以下閉區(qū)間


11. 匹配規(guī)則中的某一個規(guī)則

regex e("abc|de[fg]");    // |  匹配|兩邊的任意一個規(guī)則

12. 匹配分組

regex e("(abc)de+"); // () ()表示一個子分組

13. 匹配子分組

regex e("(abc)de+\\1");  // ()    ()表示一個子分組,而\1表示在此位置匹配第一個分組的內(nèi)容
regex e("(abc)c(de+)\\2\\1");  // \2 表示的是在此匹配第二個分組的內(nèi)容


14. 匹配某個字符串開頭

regex e("^abc."); 
// ^ begin of the string 查找以abc開頭的子字符串


15. 匹配某個字符串結(jié)尾

regex e("abc.$");
// $ end of the string 查找以abc結(jié)尾的子字符串


以上是最基本的匹配模式的書寫。通常如果要匹配特定的字符,需要使用\進行轉(zhuǎn)義,比如在匹配字符串中需要匹配".",那么在匹配字符串中應該在特定字符前加上\。出了以上的基本規(guī)則,如果還不滿足特定的需要,那么可以參考此鏈接。使用了解基本的匹配模式后,需要使用正則表達式進行匹配、查找或者替代。

正則匹配、查找與替代

書寫好模式字符串后,需要將待匹配的字符串和模式字符串進行一定規(guī)則的匹配。包括三種方式:匹配(regex_match)、查找(regex_search)、替換(regex_replace)。

匹配很簡單,直接將待匹配字符串和模式字符串傳入到regex_match中,返回一個bool量來指明待匹配的字符串是否滿足模式字符串的規(guī)則。匹配整個str字符串。

bool match = regex_match(str, e);
// 匹配整個字符串str



查找是在整個字符串中找到和滿足模式字符串的子字符串。也就是只要str中存在滿足模式字符串就會返回true。

bool match = regex_search(str, e);
// 查找字符串str中匹配e規(guī)則的子字符串


但是很多情況下,光是返回一個是否匹配的bool量是不夠的,我們需要拿到匹配的子字符串。那么就需要在模式字符串中將匹配字符串分組,參考【匹配字符串的基本規(guī)則】第12點。再將smatch傳入到regex_search中,就可以獲得滿足每個子分組的字符串。

smatch m;
bool found = regex_search(str, m, e);
for (int n = 0; n < m.size(); ++n)
  {
    cout << "m[" << n << "].str()=" << m[n].str() << endl;
  }


替換也是基于模式字符串在分組情況下完成的。

cout << regex_replace(str, e, "$1 is on $2");


此時,會在滿足分組1和分組2的字符串中間加上“ is on”。

以上三個函數(shù)有很多版本的重載,可以滿足不同情況下的需求。

實戰(zhàn)

要求:找出滿足sectionA("sectionB")或者sectionA ("sectionB")的模式字符串。且分離出sectionA、sectionB。sectionA和sectionB不會出現(xiàn)數(shù)字,字符可大小寫,至少有一個字符。

分析:根據(jù)要求,大致可分為兩個部分,也就是sectionA和sectionaB。這是就需要用到分組。

第一步:寫出滿足section情況的模式字符串

[a-zA-Z]+

第二步:在sectionA和sectionB中可能會出現(xiàn)空格。暫且假設至多有1個空格

\\s?

將以上兩個情況組合起來,也就是能滿足我們需求的模式字符串。但是如何組織才能讓其分為兩組呢?

[a-zA-Z]+\\s[a-zA-Z]+

上面這種寫法肯定不對的,根據(jù)分組規(guī)則,需要將分組以()進行區(qū)分

regex e("([a-zA-Z]+)\\s?\\(\"([a-zA-Z]+)\"\\)");

此時,在\\s?后面的\\(\"是為了滿足sectionB外層的引號和括號進行的轉(zhuǎn)義。

以上完成后,可先用regex_match進行匹配,如果匹配,那么繼續(xù)使用regex_search對字符串進行查找

if (regex_match(str, e))
{
 smatch m;
 auto found = regex_search(str, m, e);
 for (int n = 0; n < m.size(); ++n)
 {
 cout << "m[" << n << "].str()=" << m[n].str() << endl;
 }
}
else
{
 cout << "Not matched" << endl;
}

對象m數(shù)組的第一個字符串是滿足需求的整個子串,接下來才是滿足分組1、分組2的子串。

以上內(nèi)容就是正則表達式模式匹配字符串的基礎知識,希望對大家有幫助。

相關推薦:

PHP正則表達式合集

php正則表達式中常用函數(shù)的詳解

常用的正則表達式匯總

Das obige ist der detaillierte Inhalt vonWie stimmen regul?re Ausdrucksmuster mit Zeichenfolgen überein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
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

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Praktischer Leitfaden zu regul?ren Ausdrücken in Go: So passen Sie hexadezimale Farbcodes an Praktischer Leitfaden zu regul?ren Ausdrücken in Go: So passen Sie hexadezimale Farbcodes an Jul 13, 2023 am 10:46 AM

Go Language – Praktischer Leitfaden für regul?re Ausdrücke: So passen Sie hexadezimale Farbcodes an. Einführung: Regul?re Ausdrücke sind ein leistungsstarkes und flexibles Werkzeug zum Mustervergleich und zum Suchen von Zeichenfolgen. In der Go-Sprache k?nnen wir das integrierte regul?re Ausdruckspaket regexp verwenden, um diese Vorg?nge zu implementieren. In diesem Artikel wird erl?utert, wie Sie regul?re Ausdrücke verwenden, um hexadezimale Farbcodes in der Go-Sprache abzugleichen. Importieren des regul?ren Ausdruckspakets Zuerst müssen wir das regul?re Ausdruckspaket regexp der Go-Sprache importieren. Sie k?nnen die folgende Importanweisung am Anfang des Codes hinzufügen: i

Tipps zum PHP-String-Matching: Vermeiden Sie mehrdeutige eingeschlossene Ausdrücke Tipps zum PHP-String-Matching: Vermeiden Sie mehrdeutige eingeschlossene Ausdrücke Feb 29, 2024 am 08:06 AM

Tipps zum PHP-String-Matching: Vermeiden Sie mehrdeutige eingeschlossene Ausdrücke. In der PHP-Entwicklung ist der String-Matching eine h?ufige Aufgabe, die normalerweise verwendet wird, um bestimmte Textinhalte zu finden oder das Eingabeformat zu überprüfen. Manchmal müssen wir jedoch die Verwendung mehrdeutiger Einschlussausdrücke vermeiden, um die übereinstimmungsgenauigkeit sicherzustellen. In diesem Artikel werden einige Techniken zur Vermeidung mehrdeutiger Einschlussausdrücke beim String-Matching in PHP vorgestellt und spezifische Codebeispiele bereitgestellt. Verwenden Sie die Funktion preg_match() für den exakten Abgleich. In PHP k?nnen Sie preg_mat verwenden

Regul?rer PHP-Ausdruck in Aktion: Zuordnung von Buchstaben und Zahlen Regul?rer PHP-Ausdruck in Aktion: Zuordnung von Buchstaben und Zahlen Jun 22, 2023 pm 04:49 PM

PHP-Praxis für regul?re Ausdrücke: Abgleichen von Buchstaben und Zahlen Der regul?re Ausdruck ist ein Tool zum Abgleichen von Zeichenfolgen, mit dem die Suche, das Ersetzen, das Teilen und andere Vorg?nge von Zeichenfolgen problemlos implementiert werden k?nnen. Auch in der PHP-Entwicklung sind regul?re Ausdrücke ein sehr nützliches Werkzeug. In diesem Artikel erfahren Sie, wie Sie regul?re PHP-Ausdrücke verwenden, um Buchstaben und Zahlen abzugleichen. Zuordnen eines einzelnen Zeichens Um ein einzelnes Zeichen abzugleichen, k?nnen Sie die Zeichenklassen in regul?ren Ausdrücken verwenden. Zeichenklassen werden durch eckige Klammern [] dargestellt. Die darin enthaltenen Zeichen stellen die Zeichen dar, die übereinstimmen k?nnen. Sie k?nnen Bindestriche verwenden, um Bereiche darzustellen.

Regul?re PHP-Ausdrücke: Exakte übereinstimmung und Ausschluss von Fuzzy-Einschlüssen Regul?re PHP-Ausdrücke: Exakte übereinstimmung und Ausschluss von Fuzzy-Einschlüssen Feb 28, 2024 pm 01:03 PM

Regul?re PHP-Ausdrücke: Exakte übereinstimmung und Ausschluss. Regul?re Fuzzy-Inklusion-Ausdrücke sind ein leistungsstarkes Text-Matching-Tool, das Programmierern bei der effizienten Suche, Ersetzung und Filterung bei der Textverarbeitung helfen kann. In PHP werden regul?re Ausdrücke auch h?ufig zur Zeichenfolgenverarbeitung und zum Datenabgleich verwendet. Dieser Artikel konzentriert sich auf die Durchführung von exakten übereinstimmungen und den Ausschluss von Fuzzy-Inklusion-Operationen in PHP und veranschaulicht dies anhand spezifischer Codebeispiele. Exakte übereinstimmung Exakte übereinstimmung bedeutet, dass nur Zeichenfolgen abgeglichen werden, die die genaue Bedingung erfüllen, keine Variationen oder zus?tzlichen W?rter.

So passen Sie in Jedi Submarine 2 zusammen So passen Sie in Jedi Submarine 2 zusammen Feb 27, 2024 pm 08:43 PM

Jedi Submarine 2 ist ein Third-Person-Shooter mit erstklassigem Gameplay, das es Freunden erm?glicht, den Spielspa? von Online-Shootern zu erleben Ich wei? immer noch nicht, wie man das Matching durchführt. In dieser Ausgabe werde ich das Matching-Vorgangs-Tutorial von Jedi Submarine 2 vorstellen. Antwort: Klicken Sie auf der Planetenoberfl?che auf Quick Match. Die Matching-Methode von Jedi Submarine 2. Die schnelle Matching-Methode von Jedi Submarine 2 ist eine sehr gute Funktion. Sie kann Spielern dabei helfen, passende Teamkollegen zu finden, gemeinsam an einer Mission teilzunehmen und zusammenzuarbeiten, um eine h?here Missionsbewertung zu erhalten. Die Matching-Optionen finden Sie auf der Benutzeroberfl?che des Planeten. Wenn Sie nach Aufgaben suchen oder ?ffentliche R?ume ansehen, wird unten eine schnelle übereinstimmung angezeigt. Wenn der Spieler das Cross-Leveling einschaltet

Gibt es eine Zukunft für eine Besch?ftigung in der klinischen Pharmazie an der Harbin Medical University? (Wie sind die Besch?ftigungsaussichten für die klinische Pharmazie an der Harbin Medical University?) Gibt es eine Zukunft für eine Besch?ftigung in der klinischen Pharmazie an der Harbin Medical University? (Wie sind die Besch?ftigungsaussichten für die klinische Pharmazie an der Harbin Medical University?) Jan 02, 2024 pm 08:54 PM

Wie sind die Besch?ftigungsaussichten der klinischen Pharmazie an der Harbin Medical University? Obwohl die Besch?ftigungssituation im Land nicht optimistisch ist, haben Absolventen der Pharmazie immer noch gute Besch?ftigungsaussichten. Insgesamt ist das Angebot an Pharmaabsolventen geringer als die Nachfrage. Pharmaunternehmen und Pharmafabriken sind die Hauptkan?le für die Aufnahme solcher Absolventen. Auch die Nachfrage nach Talenten in der Pharmaindustrie w?chst stetig. Berichten zufolge hat das Angebot-Nachfrage-Verh?ltnis für Doktoranden in den Hauptf?chern Pharmazeutische Pr?parate und Naturmedizinische Chemie in den letzten Jahren sogar 1:10 erreicht. Besch?ftigungsrichtung des Hauptfachs ?Klinische Pharmazie“: Nach dem Abschluss k?nnen Studierende des Hauptfachs ?Klinische Medizin“ in medizinischen und Gesundheitsabteilungen, in der medizinischen Forschung und anderen Abteilungen in der medizinischen Behandlung, Pr?vention, medizinischen Forschung usw. t?tig werden. Besch?ftigungspositionen: Medizinischer Vertreter, Pharma-Vertriebsmitarbeiter, Vertriebsmitarbeiter, Vertriebsleiter, Regionaler Vertriebsleiter, Investmentmanager, Produktmanager, Produktspezialist, Krankenpfleger

So bereinigen Sie den tempor?ren Ordner So bereinigen Sie den tempor?ren Ordner Feb 22, 2024 am 09:15 AM

So bereinigen Sie den tempor?ren Ordner. W?hrend wir den Computer verwenden, sammeln sich nach und nach tempor?re Dateien (tempor?re Dateien) an. Diese tempor?ren Dateien werden generiert, wenn wir den Computer nutzen, z. B. Cache-Dateien beim Surfen im Internet, tempor?re Dateien bei der Installation von Software usw. Wenn der tempor?re Ordner über einen l?ngeren Zeitraum nicht bereinigt wird, kann dies viel Speicherplatz beanspruchen und die Geschwindigkeit des Computers beeintr?chtigen. Daher ist das regelm??ige Bereinigen des tempor?ren Ordners ein notwendiger Schritt, um die Computerleistung aufrechtzuerhalten. Im Folgenden stellen wir einige einfache M?glichkeiten zum Bereinigen des tempor?ren Ordners vor. Methode 1: Manuell reinigen

So laden Sie das Win10-Image schnell herunter So laden Sie das Win10-Image schnell herunter Jan 07, 2024 am 11:33 AM

Kürzlich haben einige Freunde berichtet, wie man Win10-Bilddateien herunterl?dt. Da es so viele Bilddateien auf dem Markt gibt, was soll ich tun, wenn ich eine normale Datei zum Herunterladen finden m?chte? Heute hat Ihnen der Herausgeber den Link zum Herunterladen des Bildes und die detaillierten L?sungsschritte bereitgestellt. Schauen wir uns diese gemeinsam an. Win10-Image-Schnelldownload und Installations-Tutorial-Download-Link >>> System Home Ghostwin101909-Image 64-Bit-Version v2019.11<<<>>>Win10-Image 64-Bit v2019.07<<<>>>Win10-Image 32-Bit v2019. 07<< <1. Suchen Sie im Internet

See all articles