字符串处理与正则表达式

功能:将cmd中的netstat -n的输出作为原始字符串做整理。

import console

var f = io.popen("netstat -n" )
var str = f.read( -1 );
//直接输出中文会乱码,所以先转换
str2 = string.fromto(str,936,65001)
f.close();

io.open(); //打开控制台
//io.print(str2); //输出全部结果

var m1 = string.match(str2,"\s*<\a\a\a>\s*<\d*\p\d*\p\d*\p\d*\p\d*>\s*<\d*\p\d*\p\d*\p\d*\p\d*>\s*\u{4,}[D]")
var m2 = string.match(str2,"\s*<\a\a\a>\s*<\d*\p\d*\p\d*\p\d*\p\d*>\s*<\d*\p\d*\p\d*\p\d*\p\d*>\s*\u{4,}\p\u{2,}[T]")
var getnum = console.getNumber("选择获取一个连接:
1. 已建立的连接;
2. 主(被)动关闭的连接
")

if(getnum == 1){
	console.log(string.replace(m1,"\u{4,}[D]","已建立"))
	var m11 = string.fromto(m1,65001,936)
	string.save("C:\establish.txt",m11,true)
};
else {
	console.log(string.replace(m2,"\s*\u{4,}\p\u{2,}[T]","已关闭"))
	var m22 = string.fromto(m1,65001,936)
	string.save("C:\finish.txt",m22,true)
}

console.pause(true)

笔记:

1.字符串可以作为数组取长度。其中都是以字节码纯存储的。所以,a在遍历中表示为97。

2.每个变量都有自己的数据类型。用‘‘引起来的都是字符串,所以num =123 和 num = "123"不同。用type(VAR)可以看到。也可以用type.string来判断。

3.在用“+”算术运算时,编译器会先尝试把内容转变成number类型,再做运算,转换不成就报错。如果只是想把两个值连接起来,就用"++"。总结局势+会把内容作为数字来做,先转换成number,++会直接转换成字符串,然后拼接起来。

4.对与number类型,可以直接输入其他 制的字符,如num=0xFF,0x9这样的,只要前面有0x,就识别成十六进制。明确制定进制的方式也很简单,如二进制用var = 2#10,就把#后面的字符处理成#前面的进制格式。最后,输出的时候,会在屏幕上显示为10进制

只是表示正数,就是无符号数。如果要用到有符号数表示正负数,要在前面增加一个bit,一个int,最大用4个byte来表示,即32个位。小数,或者叫float数,字节数翻翻,用64个位来表示,即16个byte。

5.转意符:“\”,在单引号中,\可以作为转意符。在双引号中识别为字符串。如str=‘\t‘表示位制表符,用str="\t"就是输出\t。用‘\n‘来表示换行。如果在双引号中,可以直接换行,输入的回车会原样打印。‘\0‘代表结束符。解释器读到这个字符后不再向后读取了。

6.unicode字符(编码格式为UTF16,即用16个字节,2个字符来表示一个字符串):用 \u 后面跟着4个16进制的数来表示。或,在字符串最后面加一个u:str1=‘汉字utf16‘u,这就代表生成了UTF16的字符串,不加u的时候就是成了一个UTF8的字符串str2="汉字utf8"。把这两个变量在console.log(str1,str2)里输出时,aardio会自动转换编码为控制台所支持的ANSI编码,否则一个是utf8,一个是utf16,就会乱码。

同样的,对utf16的unicode字符做循环遍历时,要#str/2,且字符串下标操作符返回2个字节表示的unicode代码。

7.在字符串中表示双引号,可以使用3种方式:1.用反引号;2用两个""来表示一个";3.把一个注释串赋值给一个字符串变量。

8.读入一个文件的方式:

本质是通过字符串赋值的方式:

var str = $"C:\Desktop\文档.txt";

这样就可以把这个文档.txt里的内容赋值给str。而且,支持直接拖入。其他的文件,比如图片,也可以用这种方式直接拖入。如:

winform.image = $"C:\Desktop\1,jpg",aardio会把这个图片处理成二进制直接打包。

9.直接下标:用两对中括号:[[]]:用在对字符串for遍历,每次输出一个字符,而不是这个字符对应的编码数。

10.字符串转换:str = string.toUnicode(str,950) 代表把一个big5的编码的str转换成为unicode模式。也可以从unicode转换为其他,例如str = string.fromto(str,第一种码页,第二种码页) 这样就可以把一种码转换成另外一种。

11.字符串截取:string.left(str,3)表示从左边开始取3个字节,如果要取三个字符,要求使用true函数:string.left(str,3,true)

12.字符串不会被修改,常量的内存是不可被修改的,但是可以用string.replace 方法来重新生成一个:

str = ‘字符串‘

str2 = string.replace(str,"a","d")

13.UTF-8编码是变长编码,小部分汉字以3个字节存储,大部分以4字节存储,但是他的每个字节肯定都是大于十六进制的x80,即x80以上都是多字节。aardio中默认字符串就是UTF8编码。

14.匹配模式只获取第一个匹配到的结果,如果要多次匹配,需使用string.gmatch()

时间: 2025-01-10 23:53:29

字符串处理与正则表达式的相关文章

PHP字符串处理与正则表达式

字符串 1. PHP中的字符串是一种基本数据类型,PHP对unicode没有本地支持. 2. 字符串可以可以通过花括号来访问每一个字符,并且每个花括号只能存放一个字符: ? ? $str = 'abcd';? ? $str{1} = 'change it';? ? echo $str; // accd 3. 双引号中变量内插解析,在双引号中的内容会被解析为字符串, ? ? 如果遇到$符号,则会贪婪解析一个尽可能多的合法变量名,使用花括号可以将变量名括起来: ? ? 在双引号中解析数组索引或者对象

【原】Java学习笔记023 - 字符串缓冲区_正则表达式

1 package cn.temptation; 2 3 import java.util.Arrays; 4 5 public class Sample01 { 6 public static void main(String[] args) { 7 // 因为字符串创建后就不能修改,导致在进行字符串拼接时,会产生大量的中间字符串,创建对象都是需要消耗资源 8 // 所以,能不用字符串的直接拼接尽量不使用 9 10 // 字符串缓冲区:StringBuffer类/StringBuilder类

第四章 字符串操作与正则表达式(5)

******** 4.6 正则表达式的介绍 (from book < PHP & MySQL Web Development>)PHP 支持两种格式的正则表达式语法:POSIX 和 Perl.用途:完成复杂的模式匹配.难度:难******** 4.6.1 基础知识 ****** 定义:正则表达式是一种描述一段文本模式的方法. 类比:strstr()函数,是在一个字符串的某个位置(如果不指明则可能在字符串中的任何位置)匹配另一个字符串. 例子:字符处"shop"匹配正

Day3_字符串操作与正则表达式

本节课的主要内容有:字符串的格式化.连接与分割.比较.匹配和替换.使用正则表达式 字符串的格式化: 去除空格:trim() 使用html格式化:nl2br()  替换‘\n’为‘<br />’ 打印格式化:printf() 大小写:strtoupper() strtolower() ucfirst() ucwords() 特殊字符转义:addlashes() striplashes() 连接与分割字符串 按指定分隔符分隔:explode() 分隔字符串到数组; strtok()查找当前分隔出的

字符串不是正则表达式

上个月写那段处理CVS文件中的逗号的小程序时,顺便写了个测试程序.测试程序先读一“|”分割字段的文件.我们原来的程序中,都是使用Java中的 StringTokenizer 类来处理读入的每行数据.我的测试程序中改用String.split()方法,但是处理一“|”分割字段的文件总是不正确.换成其它分隔符或者使用StringTokenizer就没问题.墨迹了好长时间也没找出问题. “大事不决问Google,内事不决问老婆”.老婆是指望不上了,她是做会计工作的.只好问Google.随便看了一篇文章

字符串处理利器-正则表达式

正则表达式 一.常见的符号的介绍 1.1 预定义字符类 符号 说明 . 任何字符(与行结束符可能匹配也可能不匹配) \d 数字:[0-9] \D 非数字: [^0-9] \s 空白字符:[ \t\n\x0B\f\r] \S 非空白字符:[^\s] \w 单词字符:[a-zA-Z_0-9] \W 非单词字符:[^\w] **** 转义字符,比如"\"匹配"" ,"{"匹配"{". 1.2 数量词 符号 说明 * 等价于{0,}

具有相同模式的字符串,使用正则表达式组的提取和替换的案例

对具有相同模式的字符串内不同的组的提取怎样做呢,我是这样做的: 提取字符串:sourcetext:{name:john,data:[1,2,3],name:marry,data:[4,5,6]} 代码: Regex reg = new Regex(@"data:\[([\w|.|,]{1,})\]", RegexOptions.IgnoreCase); MatchCollection matches = reg.Matches(series); foreach (Match match

delphi验证‘数字字符串’地址的正则表达式验证function

uses PerlRegEx; function CheckSortKey(SortKey:string):Boolean;//验证排序数字字符串var PerlRegEx: TPerlRegEx;begin PerlRegEx := TPerlRegEx.Create(nil); PerlRegEx.Subject := SortKey; PerlRegEx.RegEx := '^\d{10}$'; Result := PerlRegEx.Match; PerlRegEx.Free; end;

开发小计之判断输入字符串类型(正则表达式)

#pragma mark - 正则表达式 - (BOOL)isMobileNumber:(NSString *)mobileNum { /** * 手机号码 * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188 * 联通:130,131,132,152,155,156,185,186 * 电信:133,1349,153,180,189 */ NSString * MOBILE = @"^1(3[0-9]|5[0-35-