色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony中使用正則表達式

OpenHarmony技術社區 ? 來源:OST開源開發者 ? 2023-06-06 09:24 ? 次閱讀

本文主要介紹筆者在做開源鴻蒙應用開發時,ArkTs 中使用正則表達式處理像 string 等字符串對象。

主要內容如下:

一些 ArkTs 使用正則表達式示例,以及一些可能比較常用的小技巧。

正則表達式的一些應用技巧,涉及到匹配模式。

正則表達式在開源鴻蒙應用開發中,可以起到怎樣的一個應用。

黃同學最近在做 OpenHarmony 應用開發的時候,遇到了一些場景,我需要從像 string 這樣的字符串數據中,獲取我需要的特定信息

傳統的解決方式:相信我的讀者可能都有一些 DS 的基礎,知道這種其實就是字符串匹配問題,針對這種問題,常見的解法是使用:暴力匹配、KMP、AC 自動機等方式,但是在實際應用當中如果這樣做,可能比較蠢。

我此前有過在 Python 中使用過具有正則表達(式)匹配功能的 re 模塊的經歷。但是 ArkTs 并沒有類似的集成 API

但是在 ArkTs 的相關文檔以及文章中,對這一塊的描述都比較少。從官方的描述來看,我們可以知道 ArkTs 是 TypeScript 和 JavaScript 的超集,兼容了JS/TS的語言生態。

所以我在寫這篇文章的時候,看了不少 JS 和 TS 關于正則表達式的使用的文檔。

MindMap:


正則表達式在ArkTs的使用

①變量 RegExp

在 ArkTs 中,正則表達式的變量類型是 RegExp,這一點基本上兼容了 JS。有兩種表達方式。

可以用斜杠來包住正則表達式,里邊就是正則表達式的內容:

letrep:RegExp=/aS+b/;

也可以用 RegExp 的構造函數來構造,需要傳入 string 作為參數

letrep=newRegExp("aS+b");

②使用

正則表達式的變量使用較多,主要有:

match,這個是黃同學使用的最多的,在字符串中執行查找匹配的 string 方法,會返回一個數組。

letrep:RegExp=/acfun1+/;
lets:string="bkacfun1112";
console.log(s.match(rep)[0]);//acfun111
test,在一個字符串中測試,判斷正則表達式是否能夠和字符串匹配。
letrep:RegExp=/acfun1+/;
lets:string="bkacfun1112";
console.log(''+rep.test(string)?'yes':'no');//yes

match 查到的是一個第一個,但如果想匹配所有符合正則表達式的,可以使用 matchAll,這個返回的是一個迭代器,這個就不給出用例了,感興趣的朋友可以自行去 js 的相關文檔。

search,在字符串中查找匹配的位置(第一個),成功時返回匹配的位置,失敗返回 -1。

replace,即用字符串替換匹配到的字符子串。

③貪婪模式與懶惰模式

我在 ArkTs 中使用正則表達式做匹配的時候,發現和使用 Python 的 re 模塊有所不同。

在 Python 中,使用 re.match 的時候,會先匹配到最短滿足的字符串子串。而在 ArkTs 中,使用正則表達式和 match 的時候,會匹配到最長滿足的字符串子串。

上面的文字描述可能會比較抽象,下面用示例來表示:注釋中即為輸出內容

Python:

importre
s='sttstts'
pat=re.compile(r's.*s')
print(pat.match(pat).group(0))#stts
ArkTs:
letrep:RegExp=/s.*s/
lets:string='sttstts'
console.log(s.match(rep)[0])//sttstts

以上這兩種情況其實就是,在正則表達式的相關概念中,其實就是關于匹配模式中的貪婪模式與懶惰模式。

關于這兩種的詳細概念,如果朋友們想要了解,不妨去看看正則表達式的文檔。

我在這里將用比較簡單、淺顯的文字表述來解釋這兩種模式:這兩種模式,具體的運作其實就和名字一樣。

貪婪模式其實就是盡可能匹配比較長的字符串,如上面的例子 2 中的輸出,匹配過程很貪婪,和貪心算法思想類似,盡可能使匹配的結果長;而懶惰模式類似,就是匹配盡可能少的字符串,匹配到滿足的即可。

這兩種模式,其實就是為了讓開發者能更加靈活的使用正則表達式。這種兩種模式的區別主要體現在匹配多個字符的特殊正則表達式字符,比如正則表達式中+,*等。

④ArkTs 正則表達式懶惰模式

那么,如果你是 ArkTs 開發者,你要用懶惰模式,但是在 ArkTs 中,正則表達式默認是貪婪的。如何切換到懶惰模式呢?

這里和 Js 一樣,可以用 ? 來切換到懶惰模式,我們將上面的代碼修改后:

letrep:RegExp=/s.*?s/
lets:string='sttstts'
console.log(s.match(rep)[0])//stts

上述的用 ? 后,就匹配最少的字符。

正則表達式應用

相信通過上文的了解,我們已經可以對正則表達式的已經有了簡單的認知,尤其是通過這些使用的示例,很容易知道,從直接角度,正則表達式的應用是對字符串這種類型的數據處理。這種處理是查詢匹配,替換。

通過上述的直接角度,我們可以對字符串數據,即文本數據,可以用于做字符串過濾,在很多有查找,替換功能的應用(比如大家常用的編輯器 vscode,記事本),這些功能其實就有正則表達式影子。

ArkTs 應用:網絡數據過濾

這個是我在編寫 OpenHarmony 應用時,遇到的一個場景:使用@ohos.net.http 庫中相關 api 向服務器發送 http 請求,會收到 http 報文。

這種報文并不只是數據,還會有其他的部分。而我需要提取數據部分,且要分別提取出數據部分的某些字段。

因此,需要使用正則表達式來進行對網絡數據的過濾:

Code(ArKTs)

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符串
    +關注

    關注

    1

    文章

    587

    瀏覽量

    20695
  • python
    +關注

    關注

    56

    文章

    4813

    瀏覽量

    85302
  • 正則表達式
    +關注

    關注

    0

    文章

    27

    瀏覽量

    3576
  • 鴻蒙
    +關注

    關注

    57

    文章

    2410

    瀏覽量

    43291
  • OpenHarmony
    +關注

    關注

    25

    文章

    3768

    瀏覽量

    17015

原文標題:OpenHarmony中使用正則表達式

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么是正則表達式正則表達式如何工作?哪些語法規則適用正則表達式

    正則表達式又稱規則表達式(Regular Expression,在代碼中常簡寫為 regex、regexp 或 RE),是一種用于匹配、查找、替換文本的強大工具。它能夠以特定的模式匹配字符串,從而
    的頭像 發表于 11-03 14:41 ?4324次閱讀
    什么是<b class='flag-5'>正則表達式</b>?<b class='flag-5'>正則表達式</b>如何工作?哪些語法規則適用<b class='flag-5'>正則表達式</b>?

    shell正則表達式學習

    正則表達式在計算機科學中,是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。在很多文本編輯器或其他工具里,正則表達式通常被用來檢索和/或替換那些符合某個模式的文本內容。許多
    發表于 07-25 17:18

    深入淺出boost正則表達式

    什么是正則表達式正則表達式是一種用來描述一定數量文本的模式。Regex代表Regular Express. 如果您不知道什么是正則表達式,請看這篇文章:深入淺出之正則表達式
    發表于 09-08 18:09 ?9次下載

    PHP正則表達式

    PHP正則表達式,PHP建設必備的的工具,初學者簡單易懂快速入門,高手進階手冊。
    發表于 04-18 10:46 ?0次下載

    精通正則表達式

    詳細的快速正則表達式的查詢電子書,簡單而豐富
    發表于 05-16 18:04 ?5次下載

    關于java正則表達式的用法詳解

    正則表達式 一個正則表達式是一個用于文本搜索的文本模式。換句話說,在文本中搜索出現的模式。例如,你可以用正則表達式搜索網頁中的郵箱地址或超鏈接。 正則表達式示例 下面是一個簡單的Jav
    發表于 09-27 14:24 ?0次下載

    快速入門IPv6和正則表達式

    對于日常開發中只接觸IPv4,并沒有深入研究過正則表達式的開發者,面對IPv6和正則表達式,容易產生畏懼心理,覺得是兩座難以翻越的大山。本文通過一些表格整理對IPv6的表示方法,以及正則表達式的特殊符號進行了分類和說明,帶領大家
    的頭像 發表于 03-30 09:31 ?9142次閱讀
    快速入門IPv6和<b class='flag-5'>正則表達式</b>

    Python正則表達式教程之標準庫的完整介紹及使用示例說明

    本文介紹了Python對于正則表達式的支持,包括正則表達式基礎以及Python正則表達式標準庫的完整介紹及使用示例。本文的內容不包括如何編寫高效的正則表達式、如何優化
    發表于 01-23 16:00 ?3次下載
    Python<b class='flag-5'>正則表達式</b>教程之標準庫的完整介紹及使用示例說明

    Python正則表達式的學習指南

    本文介紹了Python對于正則表達式的支持,包括正則表達式基礎以及Python正則表達式標準庫的完整介紹及使用示例。本文的內容不包括如何編寫高效的正則表達式、如何優化
    發表于 09-15 08:00 ?0次下載
    Python<b class='flag-5'>正則表達式</b>的學習指南

    Python正則表達式指南

    本文介紹了Python對于正則表達式的支持,包括正則表達式基礎以及Python正則表達式標準庫的完整介紹及使用示例。本文的內容不包括如何編寫高效的正則表達式、如何優化
    發表于 03-26 09:13 ?10次下載
    Python<b class='flag-5'>正則表達式</b>指南

    C語言如何使用正則表達式

    C語言的正則表達式規則,特此跟大家分享。
    的頭像 發表于 03-16 08:41 ?5092次閱讀

    python正則表達式中的常用函數

    編譯正則表達式模式,返回一個正則對象的模式。(可以把那些常用的正則表達式編譯成正則表達式對象,這樣可以提高一點效率。)
    的頭像 發表于 03-18 16:12 ?1883次閱讀

    Linux入門之正則表達式

    正則表達式是用來表達字符串匹配模式的方法,利用正則表達式,可以讓我們輕易地實現對目標字符串的**查找**、**刪除**、**替換**等操作。 正則表達式并不復雜,它并不包含難以理
    的頭像 發表于 05-12 15:31 ?981次閱讀
    Linux入門之<b class='flag-5'>正則表達式</b>

    shell腳本基礎:正則表達式grep

    在Linux上有許多命令可以使用正則表達式,其中最常見的是grep命令和sed命令。正則表達式有多種類型,每種類型中可以使用的元字符類型不同。最常見的是基本正則表達式和擴展正則表達式
    的頭像 發表于 05-29 09:29 ?1379次閱讀
    shell腳本基礎:<b class='flag-5'>正則表達式</b>grep

    Python中的正則表達式

    哈嘍大家好,我是了不起,今天給大家講Python中的正則表達式 在Python中,正則表達式是一種強大的文本處理工具,它可以用來匹配、搜索、替換文本。正則表達式是一個特殊的字符序列,它可以描述一類
    的頭像 發表于 06-21 16:52 ?1077次閱讀
    主站蜘蛛池模板: 美女议员被泄裸照 | 国产成人a v在线影院 | 免费完整版观看 | 92精品国产成人观看免费 | 国产精品视频第一区二区三区 | MD传媒在线观看佳片 | 799是什么意思网络用语 | 高清 国产 在线 亚洲 | 一个人HD高清在线观看免费视频 | 在线免费视频国产 | 国产色无码精品视频国产 | 强奷乱码中文字幕熟女免费 | 多人乱肉高hnp | 超碰97人人做人人爱少妇 | 久久国产香蕉视频 | 99riav9 精品香蕉免费大视频 | 国产成人无码WWW免费视频在线 | 国产99网站 | 日本理伦片午夜理伦片 | 老阿姨才是最有味的一区二区 | 中文字幕网站在线观看 | 内射人妻无码色AV麻豆去百度搜 | 中文字幕专区高清在线观看 | 摥管专用动态图399期 | 免费看大黄高清网站视频在线 | 伊人久久综在合线影院 | 亚洲三级在线视频 | 97色在线视频 | 性色欲情网站IWWW九文堂 | 国产成人免费手机在线观看视频 | 扒开老师粉嫩的泬10P | 亚洲国产精品久久精品成人网站 | 精品亚洲国产成AV人片传媒 | 男人有噶坏 | 超碰97人人做人人爱少妇 | 亚洲国产精品VA在线看黑人 | 国产36d在线观看 | 美女全光末满18勿进 | 国产乱妇乱子在线播视频播放网站 | 亚洲区偷拍自拍29P 亚洲区视频在线观看 | CHINA篮球体育飞机2022网站 |