【问题标题】:Regular expression for matching account numbers匹配帐号的正则表达式
【发布时间】:2016-01-04 18:49:44
【问题描述】:

我需要匹配一个大文本文件中的帐号。帐号将采用以下格式:

  1. 帐号:123456
  2. 帐户 4567
  3. 帐号:123-456-789
  4. 帐号 134-456-789
  5. 帐号#111111

我需要一个正则表达式,它检查以“Acc”开头的每一行,忽略空格和任何特殊字符,然后以数字结尾。

我编写了以下正则表达式。问题在于它与某些帐号变体匹配。例如它匹配#1 和#2,但不匹配#3 和#4。 帐号没有固定长度,如您所见,字符串“帐号”有不同的变体

任何有关微调的帮助或建议将不胜感激。

(Acc[^0-9]*[0-9]*)

【问题讨论】:

  • 如果使用编程语言执行此操作,我会在空格上分割每一行,然后在 last 单词上使用条件正则表达式来获取帐号。
  • @c0deblack 你的问题是因为我写了一篇关于使用 VerbalExpressions 流畅的正则表达式的博客文章:stapp.space/clean-code-regular-expression

标签: regex


【解决方案1】:

这是一个更精确的正则表达式:

^Acc(?:oun)?t(?:\s+Number)?.+[\d-]+$

演示:https://regex101.com/r/bM5yB2/4

【讨论】:

  • 感谢大家的快速回复。我尝试了斯蒂芬和塞巴斯蒂安建议的解决方案,两者似乎都有效。但是,除了帐号之外,它还匹配其他模式,例如“银行 ID:12345”; “帐户名称:ABC”。 ; “帐户地址”等。有什么办法可以排除这些?
  • @c0deblack 正则表达式是否也需要匹配"Bank ID : 12345""Account Name : ABC"
  • 不,它应该只匹配帐号。
猜你喜欢
  • 2017-10-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 2011-08-03
  • 1970-01-01
相关资源
最近更新 更多