【发布时间】:2009-12-23 20:49:14
【问题描述】:
我已经能够通过正则表达式跌跌撞撞地学习很长一段时间了,但是很遗憾,我无法帮助有需要的朋友。
我的“朋友”正在尝试匹配文本文件中符合以下条件的所有行:
- 只有 7 到 10 位数字(0123456 或 0123456789)
- 只有 7 到 10 位数字,然后是破折号,然后是另外两位数字(0123456-01 或 0123456789-01)
- 匹配上述任何除了,其中代码/代码或密码/密码在要匹配的数字之前(例如“访问代码:16434629”或“密码 5253443-12")
- 编辑:只需要匹配的数字,不需要其他。
这是我见过的“他”给我的最糟糕的正则表达式:
^(?=.*?[^=/%:]\b\d{7,10}((\d?\d?)|(-\d\d))?\b)((?!Passcode|passcode|Code|code).)*$
...
问题:有没有办法使用简短的正则表达式来查找符合上述条件的所有行?
假设 PCRE。我的朋友提前谢谢你。 ;-)
顺便说一句 - 我无法在 stackoverflow.com 或 superuser.com 中找到可以准确回答此问题的任何其他问题。
编辑:我正在使用 Kodos Python 正则表达式调试器来验证和测试正则表达式。
【问题讨论】:
-
“完全是 7 到 10 位数字”是什么意思?您的意思是“正好是 7 个或 10 位数字”吗?
-
我觉得我最近说了很多,但为什么不分两步做:(1)跳过任何以“访问”或“密码”开头的行,然后(2)检查数字要求的其他行。另外,我不明白您的要求:您的 (1) 和 (2)
and或or之间的连接是什么? (根据正则表达式,它是or,但我不确定。) -
如果一行有多个数字,而字代码只在两个数字之一之前,例如。 '0123456 访问代码:1234567'?这条线应该匹配还是不匹配?
-
您使用什么工具或编程语言?
-
@Mark Byers: 1. “完全一样”是矫枉过正。简单地说,我只需要匹配 7 到 10 位数字。 2. PCRE 应该涵盖第二个问题。我使用的工具是 DLP,它使用正则表达式来查找敏感数据。
标签: regex regex-negation