【发布时间】:2012-12-21 11:21:36
【问题描述】:
我已经搜索了条件前缀的答案,但我没有找到答案。我预计我错过了一些简单的东西,但我一直没有成功。
我希望用一条正则表达式匹配所有这些系列:
以下是逻辑部分:
- (可能是 2 个字母前缀,可能是单词边界)
- (七位数)
- (可能是 2 个字符后缀 [第一个始终为字母、第二个字母或 number],可能是单词边界)
匹配示例(字母和数字任意):
1234567
1234567B1
1234567A2
1234567AA
AA1234567
AA1234567A1
AA1234567
AA1234567BB
拒绝:
12345678
/1234567
-1234567
:1234567
01234567
AB12345678AB
我的尝试:
我一直尝试在那里分组。匹配七个连续数字显然很简单'[0-9]{7}',但我很难匹配可选组中的插入符号 NOT 字符。
例如,如果我执行 '[^\d]?[0-9]{7}' 希望匹配一个可能有前缀的七位数字,但该前缀不能是数字,我的匹配项没有前缀失败(即只是一个七位数的字符串)。
显然,我是 regex 的新手,因此感谢您提供任何帮助。
编辑谢谢大家!这些中的每一个似乎都会产生与我的实际测试文件非常接近的结果,我将不得不测试一下,但目前看起来我们有多个正确和有效的答案。
【问题讨论】:
-
您是想在一行的中间找到这些字符串,还是在一行中单独查找这些字符串?
-
他们可以在任何地方——中间的或他们自己的。
-
那您能否提供更具代表性的样本输入和预期输出?
-
我不确定我是否理解您对更具代表性的输出的要求——正如我所说,这些字母数字字符串随机分散在整个文本文件中。没有任何图案。
-
然后简单地显示一个小输入文件,其中包含分散在其中的字符串以及在该文件上运行所需工具后想要获得的输出。我敢肯定,在您的脑海中,您确切地知道自己想要什么,但它是模棱两可的,因此我们很难提供准确的答案。