lua字符匹配

匹配下列格式的数据中的 source和MAC地址:

Chain WiFiDog_br-lan_Outgoing (1 references)
    pkts      bytes target     prot opt in     out     source               destination
     705   109595 MARK       all  --  *      *       10.1.1.191           0.0.0.0/0            MAC C4:6A:B7:6F:7A:AB MARK or 0x200
     705   109595 MARK       all  --  *      *       10.1.1.192           0.0.0.0/0            MAC C4:6A:B7:6F:7A:BB MARK or 0x200
     705   109595 MARK       all  --  *      *       10.1.1.193           0.0.0.0/0            MAC C4:6A:B7:6F:7A:CB MARK or 0x200
     705   109595 MARK       all  --  *      *       10.1.1.194           0.0.0.0/0            MAC C4:6A:B7:6F:7A:DB MARK or 0x200

简单实现如下,在已知格式的情况下,使用最简单快捷的方式来解决问题。

local file

file = io.open("format", "r")

for line in file:lines() do
    print(string.match(line, "%d+.%d+.%d+.%d+"))
    print(string.match(line, "%x+:%x+:%x+:%x+:%x+:%x+"))
end
file:close()

执行结果如下

>lua -e "io.stdout:setvbuf ‘no‘" "match.lua"

nil

nil

nil

nil

10.1.1.191

C4:6A:B7:6F:7A:AB

10.1.1.192

C4:6A:B7:6F:7A:BB

10.1.1.193

C4:6A:B7:6F:7A:CB

10.1.1.194

C4:6A:B7:6F:7A:DB

>Exit code: 0

原理如下:

http://www.cnitblog.com/kenlistian/archive/2008/10/15/50292.html

lua字符匹配,布布扣,bubuko.com

时间: 2024-08-05 12:00:38

lua字符匹配的相关文章

【编程题目】有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配...

37.(字符串)有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配,则两个字符串可以联接,问这 n 个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误. 分析:如果出现循环,则返回错误 这句不懂 具体做法是先给每个字符串建一个vector 存入每个字符串后面可以匹配的字符串序号 然后遍历所有的搭配情况,找到最长的. 我的遍历代码很丑... 可谓又臭又长..... 深深的自我鄙视. /* 37.(字符串) 有 n 个长为 m+1 的字符串

将字符串s1中的任何与字符串s2中字符匹配的字符都删除

编写一个程序,将字符串s1中的任何与字符串s2中字符匹配的字符都删除. 函数原型:void my_squeeze(char s1[], char s2[]) #include <stdio.h> void my_squeeze(char s1[], char s2[]) { int i = 0; int j = 0; while (s2[j]) { while(s1[i]) { if (s2[j]==s1[i]) { while (s1[i+1]) { s1[i] = s1[i + 1]; i

DP在字符匹配上的实现

在此保存下近段时间做的DP在字符匹配上的实现的题目 对于不同的字符串来说,2者只能不断将下标往后推移来实现匹配从而得到的最大匹配数 如 abcd 和 dcba 这个最大匹配数只能为1,因为两个d匹配后,在第一个字符串中是不能再拿前面的字符进行匹配的(当然你要是匹配a,b,c也是一样的道理) 对于每一道题目若想不断找到那个匹配成功的字符的话,我们需要一个函数不断递归找到前一个匹配成功的字符,这里引进一个T[N][N]的标志位来帮助我们判断何时进行递归 这里的题都是有关这个的形式 1.POJ 145

Codeforces 358B--string--(简单的字符匹配)

题意:一句话加密.每个单词的前后都要加上"<3",完成转换后的句子的任何地方都可以加任何字符或数字(加不加,在哪加,加多少都是不定的).判断输入的密文格式是否符合上面的要求. 分析:简单的字符匹配的题. 先预处理需要加密的句子,然后与输入的密文比较.主要是注意积累string的用法,还有本题预处理的方法. #include<iostream> #include<string> using namespace std; int main() { string

JavaScript正则表达式模式匹配(1)——基本字符匹配

1 var pattern=/g..gle/; //点符号表示匹配除了换行符外的任意字符 2 var str='g78gle'; 3 alert(pattern.test(str)); 4 5 6 var pattern=/go*gle/; //o* ,表示0个或者多个o 7 var str='goooooooooooogle'; 8 alert(pattern.test(str)); 9 10 var pattern=/go+gle/; //o+,表示一个或者多个o 11 var str='g

能够与 &#39; 多种字符&#39; 匹配的表达式

正则表达式中的一些表示方法,可以匹配 '多种字符' 其中的任意一个字符.比如,表达式 "/d" 可以匹配任意一个数字.虽然可以匹配其中任意字符,但是只能是一个,不是多个. 举例 1: 表达式 "/d/d",在匹配 "abc123" 时,匹配的结果是:成功:匹配到的内容是:"12":匹配到的位置是:开始于 3,结束于5. 举例 2: 表达式 "a./d",在匹配 "aaa100" 时,匹配

正则表达式学习(一)-- 字符匹配

文章首发于[sau交流学习社区](https://www.mwcxs.top/page/585.html) 一.前言 正则表达式是匹配模式,要么匹配字符,要么匹配位置. 正则里面的元字符太多了,没有系统性,可以分为: (1)字符匹配攻略 (2)位置匹配攻略 二.字符匹配 包括:两种模糊匹配,字符数组,量词,分支结构. 1.1两种模糊匹配 正则精确匹配乜有意义的,比如正则/saucxs/,只能匹配字符串中的"saucxs"这个子串. var regex = /saucxs/; conso

leetcode 44 字符匹配

题意:s是空串或包含a-z字母: p为包含a-z字母或?或 * (其中*可以匹配任意字符串包括空串,?可以匹配任意字符). 思路: 1)特殊情况:当s为空串时,p为连续 * 时,则连续 * 的位置都为true. 2)若p的第j个字符为 * ,分两种情况: a)  若p中的前 j-1个字符和 s 中的前 i 个字符匹配成功了, 即 dp[i][j-1] == true , 因为 * 可以匹配空串,则 dp[i][j] == true; b)  若p中的前 j 个字符和 s 中前 i-1 个字符匹配

【正则表达式】——02单个字符匹配

[前言]本节主要讲述匹配单个字符 1. 匹配纯文本 区分大小写 匹配纯文本和搜索功能一致 2. 匹配任意字符——“.” .匹配除了换行符以外的任意字符 注意: [元字符]特殊符号和字符,即所谓的元字符,给予了正则表达式强大的功能和灵活性, 正则表达式是由字符组成的字符串,这些字符可以是文本字符(真正的文本),也可以是元字符(含有特殊含义的字符) 原文地址:https://www.cnblogs.com/testxiaobai/p/10762173.html