【问题标题】:return only whole match word using Regex使用正则表达式仅返回整个匹配词
【发布时间】:2015-08-06 04:27:11
【问题描述】:

我有一个字符串 "myname 18-may 1234",我只想要使用正则表达式的整个字符串中的 "1234"

我尝试使用\b([0-9]*)\b 正则表达式,结果得到了"18""1234"

但我只想要"1234" 而不是"18" 请建议正确的方法从整个单词中只选择"1234"

字符串有时也会发生变化,字符串会出现"18-may 1234 myname""18-may myname 1234"

是否有可能 - 只获得1234,而不是18

【问题讨论】:

  • “1234”部分是否总是比“18”部分长? (我意识到这些只是示例)
  • \d+(?![-\w]) 试试这个。
  • 有了我提供的答案,您的问题还存在吗?
  • 请告诉我们你是如何测试正则表达式的。
  • 请解释为什么我的问题被否决,如果你不解释,那么请投票给我的问题@stribizhev

标签: c# regex


【解决方案1】:

如果您将[0-9]* 中的* 量词替换为[0-9]{n,},其中n 是您至少期望的位数,如果您使用[0-9]{3,},则正则表达式在您的示例中应该只返回1234

【讨论】:

    【解决方案2】:

    您提供的示例数据看起来像姓名和生日,其中年份(3 位或更多位数)可以在 string 的任何位置找到。如果这是真的,那么这个模式将从字符串中提取一个 3 位或更多位的数字:

    \\d{3,}
    

    经过测试@Regex101

    【讨论】:

    • @kap 你能解释一下吗?
    • 如果输入 123 则此解决方案不正确
    • @kap 也许你应该在你的问题中澄清这一点。
    • 对不起兄弟,最少 3 位数
    • 不赞成你的答案,因为这些反对票感觉非常不公平:)
    猜你喜欢
    • 2017-07-08
    • 2013-09-16
    • 2010-11-15
    • 2012-01-06
    相关资源
    最近更新 更多