草庐IT

REGEX_EXTRACT

全部标签

regex - 负向后断言正则表达式与 grep -P 有意想不到的结果

我正在测试以下否定的回顾断言,我想了解结果:echo"foofoofoo"|grep-Po'(?打印出来foofoofoo我原以为只有前两个foo会被打印出来,'echofoofoofoo'而不是第三个,因为我的断言应该意味着找到前面没有“foo”的“foo”。我错过了什么?为什么要匹配第三个foo?注意:grep-P表示将正则表达式解释为perl兼容的正则表达式。grep-o表示只打印出匹配的字符串。我的grep是2.5.1版本。 最佳答案 在对这个问题进行了大量讨论之后(已转移到聊天中),我得出的结论是我对lookbehindn

regex - 负向后断言正则表达式与 grep -P 有意想不到的结果

我正在测试以下否定的回顾断言,我想了解结果:echo"foofoofoo"|grep-Po'(?打印出来foofoofoo我原以为只有前两个foo会被打印出来,'echofoofoofoo'而不是第三个,因为我的断言应该意味着找到前面没有“foo”的“foo”。我错过了什么?为什么要匹配第三个foo?注意:grep-P表示将正则表达式解释为perl兼容的正则表达式。grep-o表示只打印出匹配的字符串。我的grep是2.5.1版本。 最佳答案 在对这个问题进行了大量讨论之后(已转移到聊天中),我得出的结论是我对lookbehindn

regex - 使用 sed 更改数字的最后两位数

我使用这个命令:sed's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;\(\r\?\)$/\1/'inputfile根据我的需要更改巨大的csv文件(参见delete';'attheendofeachline)。现在碰巧在某些csv文件中有像20000500这样的“虚构日期”,由于最后两个零(日期不可能)而无法导入SQL。在这种情况下,如何编辑我的sed命令以始终将最后两位数字更改为01(我的意思是仅当它们为00时)?我试过了sed's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;\([0-9]{6}\)00;/;\101;

regex - 使用 sed 更改数字的最后两位数

我使用这个命令:sed's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;\(\r\?\)$/\1/'inputfile根据我的需要更改巨大的csv文件(参见delete';'attheendofeachline)。现在碰巧在某些csv文件中有像20000500这样的“虚构日期”,由于最后两个零(日期不可能)而无法导入SQL。在这种情况下,如何编辑我的sed命令以始终将最后两位数字更改为01(我的意思是仅当它们为00时)?我试过了sed's/;\([0-9]*\),\([0-9]*\);/;\1.\2;/g;s/;\([0-9]{6}\)00;/;\101;

regex - 根据文件名使用 bash 和 Perl 批量重命名文件

我只想批量重命名当前目录中的文件,并从文件名末尾删除某些字符串。示例:foo-bar-(ab-4529111094).txtfoo-bar-foo-bar-(ab-189534).txtfoo-bar-foo-bar-bar-(ab-24937932201).txt输出应该是这样的:foo-bar.txtfoo-bar-foo-bar.txtfoo-bar-foo-bar-bar.txt我想删除每个文件名末尾的字符串-(ab-2492201)知道数字的长度可以变化。Perl正则表达式优于模块且不使用任何实用程序,对于bashoneliner命令是高度首选。如何在Linux上的Perl和

regex - 根据文件名使用 bash 和 Perl 批量重命名文件

我只想批量重命名当前目录中的文件,并从文件名末尾删除某些字符串。示例:foo-bar-(ab-4529111094).txtfoo-bar-foo-bar-(ab-189534).txtfoo-bar-foo-bar-bar-(ab-24937932201).txt输出应该是这样的:foo-bar.txtfoo-bar-foo-bar.txtfoo-bar-foo-bar-bar.txt我想删除每个文件名末尾的字符串-(ab-2492201)知道数字的长度可以变化。Perl正则表达式优于模块且不使用任何实用程序,对于bashoneliner命令是高度首选。如何在Linux上的Perl和

regex - VIM 中的字符串删除

我有一个文件,其一般形式为number,number,string我想从每一行中删除两个数字并仅提取字符串。正则表达式是什么? 最佳答案 您可以使用::s/^[0-9]*,[0-9]*,//对于整个文件,那是::%s/^[0-9]*,[0-9]*,// 关于regex-VIM中的字符串删除,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6251956/

regex - VIM 中的字符串删除

我有一个文件,其一般形式为number,number,string我想从每一行中删除两个数字并仅提取字符串。正则表达式是什么? 最佳答案 您可以使用::s/^[0-9]*,[0-9]*,//对于整个文件,那是::%s/^[0-9]*,[0-9]*,// 关于regex-VIM中的字符串删除,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6251956/

regex - 如何仅使用 grep/sed 提取子字符串和数字

我有一个包含文本和数字的文本文件,我想使用grep仅提取我需要的数字,例如,给定一个文件如下:missrate0.21ipc222stallsnshdmem112假设我只想提取缺失率的数据,即0.21。我如何使用grep或sed做到这一点?另外,我需要不止一个数字,而不仅仅是missrate之后的那个。也就是说,我可能想要同时获得0.21和112。示例输出可能如下所示:0.21222112因为我需要数据用于以后的绘图。 最佳答案 如果您真的只想为此使用grep,那么您可以尝试:grep"missrate"file|grep-oe'\

regex - 如何仅使用 grep/sed 提取子字符串和数字

我有一个包含文本和数字的文本文件,我想使用grep仅提取我需要的数字,例如,给定一个文件如下:missrate0.21ipc222stallsnshdmem112假设我只想提取缺失率的数据,即0.21。我如何使用grep或sed做到这一点?另外,我需要不止一个数字,而不仅仅是missrate之后的那个。也就是说,我可能想要同时获得0.21和112。示例输出可能如下所示:0.21222112因为我需要数据用于以后的绘图。 最佳答案 如果您真的只想为此使用grep,那么您可以尝试:grep"missrate"file|grep-oe'\