【仿muduo庫實現并發服務器】使用正則表達式提取HTTP元素

使用正則表達式提取HTTP元素

  • 1.正則表達式
  • 2.正則庫的使用
  • 3.使用正則表達式提取HTTP請求行

1.正則表達式

正則表達式它其實是描述了一種字符串匹配的模式,它可以用來在一個字符串中檢測一個特定格式的字串,以及可以將符合特定規則的字串進行替換或者提取的功能。

2.正則庫的使用

bool std:regex_match (const std:string &src, std:smatch &matches, std:regex &e)

1.src表示要匹配的原始字符串
2.matches,匹配提取的子串會放入這里,類似一個數組
3.e:正則表達式的匹配規則
4.返回值:用于確定匹配是否成功

3.使用正則表達式提取HTTP請求行

#include <iostream>
#include<regex>
#include <string>
int main()
{std::string str="GET /qq.com/login?user=tew&paswwd=123 HTTP/1.1\r\n";std::smatch matches;//匹配規則std::regex e("(GET|POST|PUT) ([^?]*)(?:\\?(.*))? (HTTP/1\\.[01])(?:\n|\r\n)?");//()表示要提取的子串//.是匹配除\n和\r之外的任何單個字符。//*表示匹配0次或多次//_([^?*])表示以空格開始,匹配并提取非問號的字符,*表示匹配0次或多次//\\?(.*)_表示以?開始,匹配?后面字符0次或多次,以空格為結尾 //_(HTTP/1\\.[01]) 表示以空格開始,提取HTTP1. 0或1的字符//(?: )? 這個是匹配某個字符串但不提取,最后?表示匹配前面表達式0次或1次//中間的?user=tew&paswwd=123不是所有的http請求都有,所以有就提取沒有就不提取//(?:\\?(.*))? 如果有就執行\\?(.*),如果沒有就算bool ret=std::regex_match(str,matches,e);if(ret==false)return -1;for(auto &it:matches){std::cout<<it<<std::endl;}return 0;}

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83281.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83281.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83281.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

顯示即戰略:鐵電液晶如何成為 “數字中國” 的 “像素基石”?

一、顯示技術&#xff1a;數字時代的核心戰略支點 &#xff08;一&#xff09;從 “視覺窗口” 到 “戰略基礎設施” 在數字經濟蓬勃發展的當下&#xff0c;顯示技術早已超越了單純的 “視覺呈現” 范疇&#xff0c;成為連接人與數字世界的關鍵接口。從智能手機、平板電腦到車…

適合小白的超詳細配置YOLOv8教程(畢設必看)(訓練自己數據集)(Pycharm保姆級安裝教程)(lablme的使用)(GPU版)

目錄 1.Pycharm的安裝和虛擬環境調用&#xff08;已經安裝好的可以跳過此步驟&#xff09; 1.1 下載pycharm軟件 1.2 調用已創建虛擬環境&#xff08;調用上一篇教程中創建好的虛擬環境&#xff09; 2.標注自己數據集&#xff08;已有數據集的這部分可跳過&#xff09; 2.1…

EC800X QuecDuino開發板介紹

支持的模組列表 EG800KEC800MEC800GEC800E 功能列表 基本概述 EC800X QuecDuino EVB 搭載移遠 EC800 系列模組。支持模組型號為&#xff1a; EC800M 系列、EC800K 系列、EG800K 系列、EC800E 系列等。 渲染圖 開發板的主要組件、接口布局見下圖 資料下載 EC800X-QuecDui…

Unity + HybirdCLR熱更新 入門篇

官方文檔 HybridCLR | HybridCLRhttps://hybridclr.doc.code-philosophy.com/docs/intro 什么是HybirdCLR? HybridCLR&#xff08;原名 huatuo&#xff09;是一個專為 Unity 項目設計的C#熱更新解決方案&#xff0c;它通過擴展 IL2CPP 運行時&#xff0c;使其支持動態加載和…

類 Excel 數據填報

類 Excel 填報模式&#xff0c;滿足用戶 Excel 使用習慣 數據填報&#xff0c;可作為獨立的功能模塊&#xff0c;用于管理業務流程、匯總采集數據&#xff0c;以及開發各類數據報送系統&#xff0c;因此&#xff0c;對于報表工具而言&#xff0c;其典型場景之一就是利用報表模…

MySQL 8.0 OCP 英文題庫解析(十)

Oracle 為慶祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免費考取原價245美元的MySQL OCP 認證。 從今天開始&#xff0c;將英文題庫免費公布出來&#xff0c;并進行解析&#xff0c;幫助大家在一個月之內輕松通過OCP認證。 本期公布試題81~90 試題81:…

JavaScript 性能優化實戰:從原理到框架的全棧優化指南

在 Web 應用復雜度指數級增長的今天&#xff0c;JavaScript 性能優化已成為衡量前端工程質量的核心指標。本文將結合現代瀏覽器引擎特性與一線大廠實踐經驗&#xff0c;構建從基礎原理到框架定制的完整優化體系&#xff0c;助你打造高性能 Web 應用。 一、性能優化基礎&#x…

基于Web的分布式圖集管理系統架構設計與實踐

引言&#xff1a;為什么需要分布式圖集管理&#xff1f; 在現代Web圖形應用中&#xff0c;紋理圖集&#xff08;Texture Atlas&#xff09;技術是優化渲染性能的關鍵手段。傳統的圖集制作流程通常需要美術人員使用專業工具&#xff08;如TexturePacker&#xff09;離線制作&am…

鴻蒙OS在UniApp中集成Three.js:打造跨平臺3D可視化應用#三方框架 #Uniapp

在UniApp中集成Three.js&#xff1a;打造跨平臺3D可視化應用 引言 在最近的一個項目中&#xff0c;我們需要在UniApp應用中展示3D模型&#xff0c;并實現實時交互功能。經過技術選型和實踐&#xff0c;我們選擇了Three.js作為3D渲染引擎。本文將分享我們在UniApp中集成Three.…

Flask中關于app.url_map屬性的用法

目錄 一、app.url_map 是什么? 二、可以查看哪些信息? 三、示例:打印所有路由 四、結合 url_for() 使用 五、常見用途場景 六、結合 Flask CLI 使用 總結 app.url_map 是 Flask 中非常重要的一個屬性,用于查看或操作整個應用的 URL 路由映射表(routing map)。它展…

SpringBoot項目搭建指南

SpringBoot項目搭建指南 文章目錄 SpringBoot項目搭建指南一、SpringBoot項目搭建1.1 SpringBoot 版本選擇1.2 SpringBoot 框架引入方式1.2.1 繼承 Starter Parent POM1.2.2 不使用 Parent POM 來使用 Spring Boot 1.3 SpringBoot 打包插件 二、日志框架引入2.1 引入SpringBoot…

數據庫系統概論(十六)數據庫安全性(安全標準,控制,視圖機制,審計與數據加密)

數據庫系統概論&#xff08;十六&#xff09;數據庫安全性 前言一、數據庫安全性1. 什么是數據庫安全性&#xff1f;2. 為何會存在安全問題&#xff1f; 二、安全標準的發展1. 早期的“開拓者”&#xff1a;TCSEC標準2. 走向國際統一&#xff1a;CC標準3. TCSEC和CC標準有什么不…

Jvm 元空間大小分配原則

JVM元空間&#xff08;Metaspace&#xff09;的大小分配原則與系統物理內存密切相關&#xff0c;但并不是直接等比例分配&#xff0c;而是通過一系列參數和JVM的動態管理機制來確定。下面從原理和實際行為兩方面詳細說明&#xff1a; 1. 元空間&#xff08;Metaspace&#xff0…

編程之巔:語言的較量

第一章&#xff1a;代碼之城的召集令 在遙遠的數字大陸上&#xff0c;有一座名為“代碼之城”的神秘都市。這里居住著各種編程語言的化身&#xff0c;他們以擬人化的形態生活&#xff0c;每種語言都有獨特的性格與技能。Python是個優雅的學者&#xff0c;C是個硬核戰士&#x…

飛牛fnNAS裝機之迷你小主機的利舊

前幾天找Console線的時候,翻出一臺迷你小主機,想起來以前是做“軟路由”用的,現在用不上了。本想放回箱子,但突然想起最近正在做飛牛NAS的專題,不如將其改造成NAS得了。 這個東東有HDMI、VGA接口,2個USB(其中一個支持3.0),還有4個網口。 打開機蓋,看看內部情況。發現…

uv:一個現代化的 Python 依賴管理工具

在 Python 的生態系統中&#xff0c;依賴管理和 Python 版本管理一直是開發者關注的核心問題。傳統的工具如 pip、poetry 和 pyenv 雖然功能強大&#xff0c;但在性能和使用體驗上仍有改進空間。uv 是由 Python 核心開發者開發的 現代化依賴管理工具&#xff0c;旨在提供更快、…

ubuntu 22.04安裝k8s高可用集群

文章目錄 1.環境準備&#xff08;所有節點&#xff09;1.1 關閉無用服務1.2 環境和網絡1.3 apt源1.4 系統優化1.5 安裝nfs客戶端 2. 裝containerd&#xff08;所有節點&#xff09;3. master的高可用方案&#xff08;master上操作&#xff09;3.1 安裝以及配置haproxy&#xff…

PnP(Perspective-n-Point)算法 | 用于求解已知n個3D點及其對應2D投影點的相機位姿

什么是PnP算法&#xff1f; PnP 全稱是 Perspective-n-Point&#xff0c;中文叫“n點透視問題”。它的目標是&#xff1a; 已知一些空間中已知3D點的位置&#xff08;世界坐標&#xff09;和它們對應的2D圖像像素坐標&#xff0c;求解攝像機的姿態&#xff08;位置和平移&…

QT-JSON

#include <QJsonDocument>#include <QJsonObject>#include <QJsonArray>#include <QFile>#include <QDebug>void createJsonFile() {// 創建一個JSON對象 鍵值對QJsonObject jsonObj;jsonObj["name"] "John Doe";jsonObj[…

解決各個系統報錯TDengine:no taos in java.library.path問題

windows 系統解決辦法 在本地上安裝一個TD的Windows客戶端&#xff0c;注意安裝的客戶端版本一定要和服務端TD版本完全一致。&#xff08;或者將 C:\TDengine\driver\taos.dll 拷貝到 C:\Windows\System32\ 目錄下&#xff09; 客戶端各個歷史版本下載鏈接&#xff1a;TDengin…