今天早些时候,我需要一个实用函数来从文件中剥离一些数据,并编写了一个令人震惊的常规表达式来做到这一点。输入的是一个包含很多行的文件,其格式如下:
<address> <11 * ascii character value> <11 characters>
00C4F244 75 6C 74 73 3E 3C 43 75 72 72 65 ults><Curre我想去掉除结尾的11个字符之外的所有内容,并使用以下表达式:
"^[0-9A-F+]{8}[\\s]{2}[0-9A-F\\s]{34}"这与我不想要的部分匹配,然后我从原始字符串中删除了这些部分。我很想看看你是如何做到这一点的,但我不能工作的特定领域是:
1:让正则表达式引擎返回我想要的字符,而不是我不想要的字符
2:找到在后跟空格的单个ascii值上重复匹配的方法(例如"75“= 0-9A-F{2}\s{1}?)重复11次,而不是抓取34个字符。
再看一遍,最简单的事情是匹配到每一个输入行的最后11个字符,但这不是很灵活,为了学习正则表达式,我想看看如何从序列的开始进行匹配。
编辑:谢谢各位,这就是我想要的:
"(?:^[0-9A-F]{8} )(?:[0-9A-F]{2} ){11} (.*)"希望我能让你们中不止一个人变绿。
发布于 2009-02-24 14:58:50
最后11个是:
...........$或者:
.{11}$匹配十六进制字节+空格并重复11次:
([0-9A-Fa-f]{2} ){11}https://stackoverflow.com/questions/582033
复制相似问题