首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >正则表达式仅替换perl中的第一次出现

正则表达式仅替换perl中的第一次出现
EN

Stack Overflow用户
提问于 2015-07-27 20:03:05
回答 5查看 1.3K关注 0票数 0

我有一个包含这些条目的文本文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data,34.45,5343

intaa,34353.5, 646463 
dedaa, 22542.35, 3564643
eerreg, 3435,335353

rtgegr,343543,34332

我只想替换第一个空行,忽略文件中存在的所有空行。我怎么能这样做呢?

我在正则表达式中读到了有关非贪婪的内容,但找不到适合我需要的匹配。有人能提个建议吗?

我的最终数据应该如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data,34.45,5343
intaa,34353.5, 646463
dedaa, 22542.35, 3564643
eerreg, 3435, 335653

rtgegr,343543,34332
EN

回答 5

Stack Overflow用户

发布于 2015-07-27 20:53:56

冒着提供“解决方案”而不是“使用正则表达式的解决方案”的风险,只需要一个空行上的条件和一个告诉您是否删除了空行的标志。

假设@input的每个元素中有一行,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@output = grep { /\S/ || !$flag++ } @input

将排除不包含非空格字符的第一行(并且只排除第一行)。您可能更喜欢这样的解决方案,因为多行正则表达式需要格外小心才能正确执行。

票数 4
EN

Stack Overflow用户

发布于 2015-07-27 20:53:04

在perl中设置一个$flag,并验证它是否在循环下的if中设置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
perl -lne 'if((/^\s*$/ && !$flag)){$flag=1;next;}print' file

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data,34.45,5343
intaa,34353.5, 646463 
dedaa, 22542.35, 3564643
eerreg, 3435,335353

rtgegr,343543,34332
票数 3
EN

Stack Overflow用户

发布于 2015-07-27 20:38:31

假设:

第一行也可以是“空行”

相邻的多个“空行”不会被视为一个空行。只删除第一个空行。

s/((\n)(\n)|(^\n)())/这样的怎么样?

并将第一个捕获组替换为空。

我对perl语法不是百分之百确定,因为我的perl时代已经一去不复返了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31662216

复制
相关文章
Perl 正则表达式替换
文本处理中经常需要将字符串中的某些字符替换后再进行处理,以下是新发现的非常方便的方法,充分发挥了Perl正则表达式的威力。
全栈程序员站长
2022/08/23
2.9K0
Perl正则表达式详解[通俗易懂]
这里之所以加一个g修饰符是因为perl在进行全局匹配时,会记住匹配的位置,以便下一次继续从匹配的位置继续往下匹配。 为了清晰的查看它的运行原理,可以配合pos函数来获取当前文本匹配的位置。
全栈程序员站长
2022/09/04
8540
常用的perl正则表达式
大家好,又见面了,我是你们的朋友全栈君。^\d+  //匹配非负整数(正整数 + 0)  //匹配整数 ^\d+(\.\d+)?  //匹配非负浮点数(正浮点数 + 0) ^(([0-9]+\.[0-
全栈程序员站长
2022/09/02
7290
浅谈Perl正则表达式
Perl正则表达式中模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即Perl正则表达式中模式def。其用法如结合函数split将字符串用某Perl正则表达式中模式分成多个单词:@array=split(//,$line);
全栈程序员站长
2022/09/04
1.1K0
PERL学习笔记---正则表达式
要匹配某个模式(正则表达式)和$_的关系,可以将模式放在正斜线(//)之间,如下: $_ =“yabba dabba doo”; if(/abba/){ print “It matched!\n”; }
yuanyuan
2019/09/10
6930
Perl正则表达式 模式匹配[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142836.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/25
1.4K0
Perl 正则表达式小结
1. m定界符 “/ ****/”斜杠为默认定界符,若更改“/ ”,则须m定界符说明,m{****}
全栈程序员站长
2022/09/01
3290
正则表达式--Perl正则表达式
{3}前面的数字出现3次,这是精确匹配 {3,}表示前面的数字最少出现3次 {,3}表示前面的数字最多出现3次 匹配包含制表符的行
陳斯托洛夫斯記
2022/10/04
7950
正则表达式--Perl正则表达式
Perl在ASIC中的应用——高级篇(1):正则表达式
从今天开始,我们介绍Perl在ASIC应用中的高级篇。高级篇主要介绍正则表达式、module、package、面向对象、进程等。
ExASIC
2020/07/16
1.8K0
Perl正则表达式处理换行
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139716.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/02
4640
posix,perl正则表达式区别
1、正则表达式(Regular Expression,缩写为regexp,regex或regxp),又称正规表达式、正规表示式或常规表达式或正规化表示法或正规表示法,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串 。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容 。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的在正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
sunsky
2020/08/20
1.4K0
Perl正则表达式:正则匹配
我们已知在Perl中正则表达式被称为模式,这种模式(也即正则表达式)可以放在由成对符号(例如()、<>、{}等)或者一对不成对的符号(例如//、!!、^^等)组成的界定符内,并在界定符前用小写字母指定模式的种类。当然我们不希望界定符和正则表达式的符号有所冲突(如果实在有冲突可以使用反斜杠转义),事实上最常用的界定符为双斜杠//。在Perl中有很多处理模式,其中最简单的为匹配模式m//,或者也可以理解为查找模式。由于正则表达式本身就有匹配的含义,以双斜杠作为定界符时m可以省略。其他处理模式详见下一小节。
SYSU星空
2022/05/05
4.2K0
Perl正则表达式:正则匹配
PERL学习笔记---正则表达式的应用
//这是m//(模式匹配)的一种简写。同qw//操作一样,可以使用任何 成对的分隔符。因此,可以使用m(fred), m<fred>, m{fred}, m[fred],或者m,fred,, m!fred!, m^fred^,其它非成对的分隔符也 可以
yuanyuan
2019/09/10
6990
Perl正则表达式超详细教程
想必学习perl的人,对基础正则表达式都已经熟悉,所以学习perl正则会很轻松。这里我不打算解释基础正则的内容,而是直接介绍基础正则中不具备的但perl支持的功能。关于基础正则表达式的内容,可参阅基础正则表达式。
全栈程序员站长
2022/08/23
6.2K0
Perl正则表达式超详细教程
Perl正则表达式:文本处理
在正则表达式中s/正则表达式/替换字符/模式可以对特定字符串进行匹配查找并替换(substitution),如果匹配失败则不替换。其中s///可以理解为正则表达式的模式,也可以理解为操作符,其要修改的数据必须储存在变量,使用绑定操作符指定替换操作(不指定则使用默认变量$_),中如下所示:
SYSU星空
2022/05/05
4.9K0
Perl正则表达式:文本处理
perl正则表达式匹配后的各种变量
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138429.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/23
8860
Perl正则表达式:字符与字符集
正则表达式语言由两种基本字符类型组成:原义文本字符和元字符(metacharacter)。原义文本字符也即要匹配的实际文本字符或者空格,而元字符是一个或一组代替一个或多个字符的字符,可以用来进行模糊匹配。常用的元字符及其表达式的含义如下表所示:
SYSU星空
2022/05/05
1.2K0
Perl正则表达式:字符与字符集
Aptana与Editplus中查找并替换的正则表达式应用
复杂、多人协作的时候会使用Aptana,简单、单个作战的时候通常会选用Editplus,而在开发过程中或多或少需要用到正则表达式去替换一些字符串,掌握了方法,对于提升开发效率是很有用的。
meteoric
2018/11/15
1.2K0
正则表达式查找替换
thisisbefore(self ,func) 替换成thisisafter(func,self).
立羽
2023/08/24
1930
点击加载更多

相似问题

Perl正则表达式仅匹配Diggernaut中的第一次出现

125

除了Perl中的第一次出现外,替换

27

仅替换第一次出现的函数

11

RegEX -仅替换第一次出现的文本

10

仅替换Bash-String中的第一次出现

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文