1. 程式人生 > >lua的string庫和正則表示式

lua的string庫和正則表示式

一.前提要了解一下lua 的string幾個方法

1. string庫中所有的字元索引從前往後是1,2,...;從後往前是-1,-2,...

2. string庫中所有的function都不會直接操作字串,而是返回一個結果

string.len(s):返回字串的長度.

string.lower(s):變小寫.

string.upper(s):變大寫.

string.rep(s,n):將s拷貝n份,並連線起來,返回.

string.sub(s,i [,j]):取s中從i開始到j為止的自字串.預設j為長度.-i表示倒數.

1.string.find(s, pattern, pos) 

  第1個引數:源字串
  第2個引數:待搜尋之模式串
  第3個引數:A hint, 從pos位置開始搜尋
  找到匹配返回:匹配串開始和結束的位置,否則返回nil

2.string.gsub(s, pattern, reps)  string.gsub(s, pattern, func)

  第1個引數:源字串

  第2個引數:待替換之模式串

  第3個引數:替換為reps

  返回 結果串+匹配數

  gsub也可以用拷貝捕獲技巧

  print(string.gsub("hello, world", "(o)", "%1-%1")) <== hello-o, wo-orld    2

  print(string.gsub("hello Lua", "(.)(.)", "%2%1")) <== ehll ouLa           4

  function trim (s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end <== 注意匹配數用括號丟棄

  string.gsub(s, pattern, func)

  第3個引數:自定義函式,對找到的匹配操作,並傳出替換值

  s, n = string.gsub("hello world", "l+", function(s) return "xxx" end)----> l+一個或多個l ,所以替換了 ll  和  l  返回為2

  print(s, n) <== hexxxo worxxxd 2

3.string.gfind

返回一個迭代器,迭代器每執行一次,返回下一個匹配串;

iter = string.gfind("a=b c=d", "[^%s+]=[^%s+]")

print(iter()) <== a=b

print(iter()) <== c=d

通常用於泛性for迴圈,下面的例子結果同上

for s in string.gfind("a=b c=d", "[^%s+]=[^%s+]") do

print(s)

end

4.下面的表列出了Lua支援的所有字元類

   .        任意字元
%a        字母
%c        控制字元
%d        數字
%l        小寫字母
%p        標點字元
%s        空白符
%u        大寫字母
%w        字母和數字
%x        十六進位制數字
%z        代表0的字元
上面字元類的大寫形式表示小寫所代表的集合的補集。例如, '%A'非字母的字元: 

模式串中的特殊字元

( ) . % + - * ? [ ^ $

'%' 用作特殊字元的轉義字元

'%.' 匹配點;

'%%' 匹配字元 '%'。

轉義字元 '%'不僅可以用來轉義特殊字元,還可以用於所有的非字母的字元。當對一個字元有疑問的時候,為安全起見請使用轉義字元轉義他。

用'[]'建立字符集

'[%w_]' 匹配字母數字和下劃線

'[01]' 匹配二進位制數字

'[%[%]]'匹配一對方括號

在'[]'中使用連字元'-'

'%d'    表示 '[0-9]';

'%x'    表示 '[0-9a-fA-F]'

'[0-7]' 表示 '[01234567]'

在'[]'開始處使用 '^' 表示其補集:

'[^0-7]' 匹配任何不是八進位制數字的字元;

'[^\n]' 匹配任何非換行符戶的字元。

'[^%s]' == '%S'

模式修飾符

  + 匹配前一字元1次或多次

  * 匹配前一字元0次或多次;最長匹配

  - 匹配前一字元0次或多次;最短匹配

  ? 匹配前一字元0次或1次

  ^ 匹配字串開頭

  $ 匹配字串結尾

參考資料:

相關推薦

利用Requests表示式爬取豆瓣影評Top250

說明         最近看了下爬蟲基礎,想寫個部落格來記錄一下,一來是可以方便和我一樣剛入門的小白來參考學習,二來也當做自己的筆記供自己以後查閱。         本文章是利用python3.6和Requests庫(需自行安裝,cmd裡執行pip install r

lua的string表示式

一.前提要了解一下lua 的string幾個方法 1. string庫中所有的字元索引從前往後是1,2,...;從後往前是-1,-2,... 2. string庫中所有的function都不會直接操作字串,而是返回一個結果 string.len(s):返回字串的長度

python爬蟲學習實踐(一):requests表示式之淘寶爬蟲實戰

使用requests庫是需要安裝的,requests庫相比urllib 庫來說更高階方便一點,同時與scrapy相比較還是不夠強大,本文主要介紹利用requests庫和正則表示式完成一項簡單的爬蟲小專案----淘寶商品爬蟲。有關於更多requests庫的使用方法請參考:官方文件第一步:我們先開啟淘寶網頁然後搜

python的OS表達式

特殊字符 see lena 字符串表 find 移動 沒有 忽略 eva 摘自:http://blog.chinaunix.net/uid-16360955-id-3351990.html 作留存學習 1.常用內置函數:(不用import就可以直接使用) hel

用Requests表示式爬取豆瓣圖書TOP250

思路和上文大同小異。 import requests from requests.exceptions import RequestException import re import json headers = {'User-Agent':'Mozilla/5.0(Macinto

用Requests表示式爬取貓眼電影(TOP100+最受期待榜)

目標站點分析 目標站點(貓眼榜單TOP100): 如下圖,貓眼電影的翻頁offset明顯在URL中,所以只要搞定第一頁的內容加上一個迴圈加上offset就可以爬取前100。 流程框架 1、抓取單頁內容 利用requests請求目標站點,得到單個網頁HTML程式碼,返回結

Python 利用BeautifulSoup表示式 來爬取旅遊網資料

import re import requests import time from bs4 import BeautifulSoup url = ‘http://www.cntour.cn/’ r = requests.get(url) print(r.encoding,len(r.t

Boundary Extractor表示式提取器

一、Boundary Extractor      這是在jmeter4.0版本的後置處理器中增加的一個新元件,功能強大,使用方便;      有了它,可以完美替代正則表示式提取器和JSON Extractor等。

MySQL UNION、排序、分組、連線、NULL值處理表示式

UNION SQL UNION 下面的SQL語句從product和orderdetail表中選取所有不同的pCode(只有不同值) SELECT pCode FROM product UNION SELECT pCode FROM orderdetail ORDER BY p

LINUX學習—grep表示式(LINUX三劍客)

grep, egrep, fgrep grep(GLOBAL RESEARCH) 是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹配的行打印出來。根據模式,搜尋文字,並將符合模式的文字行顯示出來。只能使用基本正則表示式 要使用擴充套件正則表示式需要-E pattern

Python-re(表示式)

re庫是python的一個標準庫,不需要自己用pip額外下載,直接呼叫即可。 下面介紹以下庫中函式的作用。 1.re.compile(patter, flags=0) patter是一個正則表示式字串,例如"[0-9]+",該函式返回一個模式物件(patter object),str型別 2

python爬蟲的re表示式匹配)

re庫是python中自帶的一個庫,不需要外部匯入。 它主要是支援正則表示式匹配。 下面來說一下其主要功能函式: 函式 說明 re.search() 在一個字串中搜索匹配正則表示式的第

python筆記 7-8 程序池 程序通訊 迭代器 訊息佇列 Queue 協程 表示式

day7 程序 程序池 程序通訊 迭代器 訊息佇列 Queue 作用 用於多個程序間的通訊 操作put放入訊息(值) put_nowait() 放入值,不等待 如果隊滿,則報錯 get獲取訊息(值) get_nowait() 獲取值,不等待 如果隊空,則報錯 判斷 f

Linux中的萬用字元表示式

在linux中,有萬用字元和正則表示式,這是兩個不同的概念 萬用字元:它是由shell解析,並且一般用於匹配檔名。如:ls 正則表示式:是一個字元匹配標準,可以匹配文字中的內容 一些命令工具按此標準實現字元匹配,常用於支援正則表示式的工具,如grep,sed等。一般用於匹配檔案中的內

Zookeeper表示式

  NGINX     1.反向代理    2.負載均衡    3.http伺服器(包含動靜分離)    4.正向代理  高併發流量的控制    1.快取 

MySQL UNION、排序、分組、連線、NULL值處理表示式

UNION SQL UNION 下面的SQL語句從product和orderdetail表中選取所有不同的pCode(只有不同值) SELECT pCode FROM product UNION SEL

python re表示式)入門

正則表示式(英文名稱:regular expression,regex,RE)是用來簡潔表達一組字串特徵的表示式。最主要應用在字串匹配中。 \d 數字:[0-9] \D 非數字: [^0-9] \s 空白字元:[ \t\n\x0B\f\r] \S 非空白字元:[^\s] \w 單詞字

Scala 檔案表示式

1. 讀取行 import scala.io.Source object FileSyllabus {   def main(args: Array[String]): Unit = {     //檔案讀取  

【JavaScrpit】字串表示式的4個相關方法

字串和正則表示式的4個方法:split( );  search( );   match( );   replace( ); 下面介紹4個方法的各自作用: split( );        : 可以將一個字串拆分為

如何使用 awk 表示式過濾文字或檔案中的字串

當我們在 Unix/Linux 下使用特定的命令從字串或檔案中讀取或編輯文字時,我們經常需要過濾輸出以得到感興趣的部分。這時正則表示式就派上用場了。 什麼是正則表示式? 正則表示式可以定義為代表若干個字元序列的字串。它最重要的功能之一就是它允許你過濾一條命令或一個檔案的輸出