Perl正则表达式处理换行

Perl正则表达式处理换行usestrict;
my$values;
open(OUTFILE,”file.txt”)ordie(“Can’tfindfile.txt:$!”);
while(defined($values=)){
#print$values;
if($values=~/.*UserName:(.*);(.*)/ms){
print$1;

大家好,又见面了,我是你们的朋友全栈君。

use strict; 
my $values ;
open(OUTFILE,"file.txt") or die("Can't find file.txt:$!") ;
while(defined($values= <OUTFILE>)){
# print $values ;
if($values =~ /.*User Name:(.*);(.*)/ms){
print $1;
print $2;
}}

我的file.txt内容为:
Logon Failure:
User Name:lixin;
Domain:BEIM-SERVER;
Reason:Unknown user name or bad password!
问题:按照我的程序匹配之后,本应$1得到的是lixin,$2得到的是后面所有的内容。

但此时$2只得到个换行,后面两行内容并未得到。

这是因为$values= <OUTFILE>只读取了一行,$/ 中保存这输入行记录分隔符(它的默认分隔符是/n)。因此,每当菱形运算符用于读取数据时,它将一直读取数据,直到它发现与$/一致的字符。所以,如果我们将$/设为 undef ,菱形运算符将读取整个文件并将它们存储在标量中。

要想让perl“吞吃文件”,可以改成这样:

use strict;
my $values ;
open(OUTFILE,"file.txt") or die("Can't find file.txt:$!") ;
$/ = undef; # 此行注掉后,$values 仅读入Logon Failure:
while(defined($values= <OUTFILE>)){
# print $values ;
if($values =~ /.*User Name:(.*);(.*)/ms){
print $1;
print $2;
}}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139716.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【机器学习】详解 转置卷积 (Transpose Convolution)「建议收藏」

    【机器学习】详解 转置卷积 (Transpose Convolution)「建议收藏」【机器学习】详解转置卷积(TransposeConvolution)

    2022年6月21日
    28
  • 基于OIDC实现单点登录SSO、第三方登录[通俗易懂]

    基于OIDC实现单点登录SSO、第三方登录[通俗易懂]OIDC联合身份认证机制背景概念1OIDC身份认证协议2基于OIDC实现SSO2.1统一登录2.1.1流程2.1.2RP相关接口2.1.3OP相关接口2.2统一登出2.2.1流程2.2.2RP需要在向OP注册时提供2.2.3RP相关接口2.2.4OP相关接口2.3持续监视2.3.1流程2.3.2RP相关接口2.3.3OP相关接口3在OIDC的SSO中集成第三方登录(…

    2022年8月30日
    5
  • android短信验证码代码,Android短信验证码自动填写实现代码

    android短信验证码代码,Android短信验证码自动填写实现代码今天给大家分享一个Android短信验证码自动填写的功能。先看下效果图,我发送了一条短信到手机,自动填写验证码。如图:这个小功能运用到了观察者模式,什么是观察者模式?观察者模式:定义对象间的一种一个(Subject)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新。在本例中,我们在短信中注册一个观察者,当短信功能(被观察者)收到信息时,就会…

    2022年7月25日
    10
  • ADB-安装配置[通俗易懂]

    ADB-安装配置[通俗易懂]一、只要下载ADB安装包即可就这4个文件:备注:如果下载放入到D盘去解压,打开dos窗口那么就要进入到D盘,然后再去执行adb命令,输入adb查看它是否安装成功二、ADB命令简单使用查看连接设

    2022年8月4日
    6
  • 数据挖掘选择题_数据挖掘算法例题

    数据挖掘选择题_数据挖掘算法例题目录一、填空题二、计算题一、填空题❃随着信息技术的高速发展,数据库应用的规模、范围和深度不断扩大,网络环境成为主流等等。产生“数据丰富而信息贫乏”现象。❃“数据丰富而信息贫乏”现象导致大数据概念。❃数据(Data)、信息(Information)和知识(Knowledge)是广义数据表现的不同形式。❃大数据时代的数据挖掘技术需求分析的流派:数据论、方法论、环境论、特征论…

    2025年9月1日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号