用于查找带有字符和数字的字符串的正则表达式

标签 regex string regex-greedy

我正在尝试匹配零件号与普通文本混合的字符串。

这里有一些例子。

  • 牵引控制 Ecu,Gl3t-19H378-Ac
  • 总成、电源、测试 Gd、Priv-M50t3
  • 左,后,棕褐色,电源,4DR,Mju1
  • T-Case Ecu,56029590AE
  • 右,盲点模块,284K0 9HS0F

  • 在这些例子中,我试图匹配。
  • GL3t-19H378-Ac
  • Priv-M50t3
  • Mju1
  • 56029590AE
  • 284K0 和 9HS0F

  • 我在 .Net 中,这是我一直在使用的正则表达式。
    (\b[a-zA-Z0-9][a-zA-Z0-9\-]{1,32}(\b|$)(?<=[0-9]))
    

    如果比赛以数字结尾,它可以满足我的需要。我想要的规则是匹配单词边界之间的任何字符串,这些字符串要么是所有数字,要么是数字和字符混合,但绝不只是字符。

    最佳答案

    这应该这样做:

    \b[a-zA-Z0-9-]*\d[a-zA-Z0-9-]*\b
    

    如果您需要将长度限制为最大 32,请添加前瞻:
    \b(?=[a-zA-Z0-9-]{1,32}\b)[a-zA-Z0-9-]*\d[a-zA-Z0-9-]*\b
    

    如果下划线也可以,可以使用[\w-]而不是 [a-zA-Z0-9-] .

    关于用于查找带有字符和数字的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56012621/

    相关文章:

    java - 正则表达式 - Java - 匹配字符串 (012|123|234|345|456|567|678|789|890)

    c# - 通用类和约束

    javascript - 如何使正则表达式变为非贪婪?

    正则表达式:懒惰更糟吗?

    python - 正则表达式不匹配

    regex - perl 中的无限循环

    java - 反转字符串标记的输出

    python - 将等于 json 字典的字典转换

    regex - 为什么在这个 Perl 正则表达式中 `\s+` 比 `\s\s*` 快得多?

    javascript替换多个字符