Lua字符串及模式匹配】的更多相关文章

字符类基础函数举例介绍: string.len( ‘string’ ) string.lower( ‘string’ ) string.upper( ‘string’ ) string.rep( ‘a’ , 5 ) ==> aaaaa string.sub( ‘string’ , I , j ) string.sub( s, string.find(s, 'world') ) string.sub函数会提取子串by子串所在字符串的位置下标 string.char() string.byte()…
(一). 模式匹配函数在string库中功能最强大的函数是:string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmatch(返回查找到字符串的迭代器) 这些函数都是基于模式匹配的.与其他脚本语言不同的是,Lua并不使用POSIX规范的正则表达式[4](也写作regexp)来进行模式匹配.主要的原因出于程序大小方面的考虑:实现一个典型的符合POSIX标准的regexp大概需要4000行代码,这比整个Lua标准库加在一…
Lua字符串库小集 1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回字符串s重复n次的结果:    3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变:    4). string.upper(s) 和lower相反,将小写转换为大写:    5). string.sub(s,i,j) 提取字符串s的第i个到第j个…
Lua字符串可以使用以下三种方式表示: 单引号间的一串字符. 双引号间的一串字符. [[和]]间的一串字符. string = [["Lua"]] print("字符串 是",string) --字符串 是 "Lua" Lua 提供很多内建方法支持字符串的操作: string.upper(argument): -->字符串全部转为大写字母 string.lower(argument): -->字符串全部转为大写字母 string.gs…
Step By Step(Lua字符串库) 1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回字符串s重复n次的结果:    3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变:    4). string.upper(s) 和lower相反,将小写转换为大写:    5). string.sub(s,i,j) 提取…
字符串的模式匹配 字串的定位操作通常称做模式匹配,是各种串处理系统中最重要的操作之一.本文主要介绍两种常用的实现算法: 1.暴力匹配 2.KMP算法 1.暴力匹配 时间复杂度为O(n*m):n为主串长度,m为模式串长度 算法的基本思想: 从主串的起始位置(或指定位置)开始与模式串的第一个字符比较,若相等,则继续逐个比较后续字符:否则从主串的下一个字符再重新和模式串的字符比较.依次类推,直到模式串成功匹配,返回主串中第一次出现模式串字符的位置,或者模式串匹配不成功,这里约定返回-1: //伪代码…
lua 字符串 语法 单引号 双引号 "[[字符串]]" 示例程序 local name1 = 'liao1' local name2 = "liao2" local name3 = [[liao3]] print(name1, name2, name3) 常用函数 函数 作用 备注 string.upper 将字符串转换为大写 string.upper(argument) string.lower 将字符串转换为小写 string.lower(argument)…
字符串或串(String)是由数字.字母.下划线组成的一串字符. Lua 语言中字符串可以使用以下三种方式来表示: 单引号间的一串字符. 双引号间的一串字符. [[和]]间的一串字符. 以上三种方式的字符串实例如下: string1 = "Lua" print("\"字符串 1 是\"",string1) string2 = 'w3cschool.cc' print("字符串 2 是",string2) string3 = […
本文内容基于版本:Lua 5.3.0 概述 Lua字符串中的合法字符可以是任何的1字节数据,这包括了C语言中表示字符串结束的'\0'字符,也就是说Lua字符串在内部将以带长度的内存块的形式存储,存储的是二进制数据,解释器遇到'\0'字符并不会截断数据.同时在和C语言交互时,Lua又能保证为每个内部储存的字符串末尾添加'\0'字符以兼容C库函数,这使得Lua的字符串应用范围相当广泛. Lua字符串一旦被创建,就不可被改写.Lua的值对象若为字符串类型,则它将以引用方式存在.字符串对象属于需要被垃圾…
© 版权声明:本文为博主原创文章,转载请注明出处 1.Lua字符串 - ''单引号间的一串字符 - ""双引号之间的一串字符 - [[]]之间的一串字符 2.Lua转义字符 3.字符串操作 - string.upper(argument):将字符串全部转换成大写 - string.lower(argument):将字符串全部转换成小写 - string.gsub(mainString, findString, replaceString, num):替换字符串 - mainString…
1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回字符串s重复n次的结果:    3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变:    4). string.upper(s) 和lower相反,将小写转换为大写:    5). string.sub(s,i,j) 提取字符串s的第i个到第j个字符.Lua中,第一…
1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回字符串s重复n次的结果:    3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变:    4). string.upper(s) 和lower相反,将小写转换为大写:    5). string.sub(s,i,j) 提取字符串s的第i个到第j个字符.Lua中,第一…
字符串库 注:字符串在Lua中是不可变的.不论什么的string操作都不会去改变原有的字符串.都是返回新的字符串 一.一般函数 1. 求长度 s = "Hello LUA "; print(string.len(s)); print(#s); 2. 反复 print(string.rep(s,3));   -- s 反复了3次 3. 大写和小写转换 print(string.upper(s));   print(string.lower(s)); -- 大写和小写的一个典型用途,假如要…
匹配模式(pattern) . 任何单个字符 %a 任何字母 %c 任何控制字符 %d 任何数字 %g 任何除空白符外的可打印字符 %l 所有小写字母 %p 所有标点符号 %s 所有空白字符 %u 所有大写字母 %w 所有字母及数字 %x 所有 16 进制数字符号 %x (这里 x 是任何非字母/数字的字符) 表示字符 x.如 %% 表示百分号%,%. 表示点号.,%/ 表示斜杠/. [set] 表示 set 中所有字符的联合,找到其中任一字符即表示匹配.可以用 - 连接,如[0-9] 表示 0…
函数原型 string.find(s, pattern [, init [, plain]] ) s: 源字符串 pattern: 待搜索模式串 init: 可选, 起始位置 plain: 我没用过 ① 子串匹配: print(string.find("haha", 'ah') ) ----- 输出 2 3 注意: lua 里面数组或者字符串的字符, 其下标索引是从 1 开始, 不是 0 string.find 默认情况下返回两个值, 即查找到的子串的 起止下标, 如果不存在匹配返回…
原文地址http://www.freecls.com/a/2712/f lua的string库是用来处理字符串的,基础函数如下 string.byte(s [, i [, j]]) string.byte是用来把字符转换成ascii数字,s为目标字符串,i为索引开始位置(从1开始),j为索引结束位置 string.char(...) string.char是把ascii数值转换成字符 例子 --默认为第1个返回a的ascii值    local r = string.byte('abcdefg'…
string.gsub 函数有三个参数:目标串,模式串,替换串.基本作用是用来查找匹配模式的串,并将使用替换串其替换掉: s = string.gsub("Lua is good", "good", "bad?") print(s)   --> Lua is bad string.gsub 的第二个返回值表示进行替换操作的次数.例如,下面代码计字符串中空格出现的次数: _, count = string.gsub("test te…
1.求字符串长度 string.len(str) 2.大小写转换 string.upper(str) string.lower(str) 3.字符串查找(非全局) --func_string.lua s = "Hello World World" print(string.find(s,'World')) -- 7 11 -- 返回索引开始值 与结束值 --string.find(arg1,arg2,[arg3]) --参数3 可选, 搜索开始位置 4.字符串截取 --func_str…
1.字符串 <1>字符串相连/加法   .. local str = "abc" str = str .. 7 --字符串与数字相连 print(str) --abc7 str = str .. " asd" --字符串与字符串相连 print(str) --abc7 asd str = str .. "123" print(str) --abc7 asd123 <2>数字与字符串相转 ---1.数字转字符串 --数字转字…
Lua中字符串结构体的定义是: typedef union TString { L_Umaxalign dummy; /* ensures maximum alignment for strings */ struct { CommonHeader; lu_byte reserved; unsigned int hash; size_t len; } tsv; } TString; 这里TString结构体是一个union, 最开始的L_Umaxalign dummy;起到的是对齐作用.紧跟着是…
最近要用到字符串对齐,开始只是一部分字符串,就直接加空格了,后来发现有很多, 于是写了个字符串对齐的函数. --功能:分割字符串 --参数:带分割字符串,分隔符 --返回:字符串表 function string.split(str, delimiter) str = tostring(str) delimiter = tostring(delimiter) if (delimiter=='') then return false end , {} -- for each divider fou…
Lua的函数的定义.math数学函数 定义函数 function [function name] (param1,param2) [function code] --定义一个函数用来求的两个数字的和 function plus (num1,num2) return num1+num2 end res = plus(54,12) print(res) Lua内置提供了一些常用函数 1.数学处理的math相关函数 2.字符串处理的string 相关函数 3.表处理的table相关函数 4.文件操作的…
RegExp实例方法 ECMAScript通过RegExp类型来支持正则表达式,创建正则表达式有两种方式: //使用字面量形式定义正则表达式 var pattern1 = /[bc]at/i //使用构造函数创建 var pattern2 = new RegExp("[bc]at", "i") //构造函数接受两个参数:要匹配的字符串模式和可选的标志字符串 ECMAScript3中正则表达式字面量始终会共享同一个RegExp实例,而使用构造函数创建的每一个新RegE…
lua的官方函数里无字符串分割,起初写了个简单的,随之发现如果是中文.字符串.特殊符号就会出现分割错误的情况,所以就有了这个zsplit. function zsplit(strn, chars) function stringPatch(str) --格式化输入包含特殊符号的分割字符 local str_p = str: gsub("%)", "% %)") : gsub("%(", "%%(") : gsub("…
源码:kmp.cpp // KMP.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <IOSTREAM> using namespace std; #define BUF_SIZE 100 #define BUF_SIZE_2 200 /*****************************************************…
在朴素的模式匹配算法中,主串的pos值(i)是不断地回溯来完成的(见字符串的基本操作中的Index函数).而计算机的大仙们发现这种回溯其实可以是不需要的.既然i值不回溯,也就是不可以变小,那么考虑的变化就是子串的pos值(j)了.通过分析发现子串中如果有相等字符,j值的变化就会不相同,也就是说,这个j值的变化跟主串其实没什么关系,关键就取决于子串的结构中是否有重复的问题. 我们把子串各个位置的j值变化定义为一个数组next,那么next的长度就是子串的长度(next[0]空置).于是可以得到下面…
注意,在IDE运行时,可能会因为开的数组太大而报错,这时我们可以把数组开小一点来进行调试....提交的时候把数组的大小改成1000005即可.... #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn = 1000005; int main() { char str[maxn]; while (scanf("%s",…
字符类 %a --字母alpha %d --数字double %l --小写字母lower %u --大写字母upper %w --字母和数字word %x -- 十六进制 %z --代表0 zero %s --空白符 space %p --标点% 转义 修饰符 + 一次或多次 * / - 0次或多次 例子 i,j = test = "int x;/* x */ int y;/* y */" s1 = string.gsub(test,"/%*.-%*/",&quo…
参考这个网友写的,比较简单容易理解. http://blog.csdn.net/wlgy123/article/details/49206183…
Lua并不使用POSIX规范的正则表达式[4](也写作regexp)来进行模式匹配.主要的原因出于程序大小方面的考虑:实现一个典型的符合POSIX标准的regexp大概需要4000行代码,这比整个Lua标准库加在一起都大. 关于Lua模式匹配学习是本文要介绍的内容,主要是来学习Lua中模式匹配的问题,具体内容的实现来卡本文详解.模式匹配函: 在string库中功能最强大的函数是: string.find(字符串查找) string.gsub(全局字符串替换) string.gfind(全局字符串…