【问题标题】:String Number Regex Issue字符串数字正则表达式问题
【发布时间】:2017-04-26 08:07:07
【问题描述】:

我尝试为以下示例构建正则表达式:
球队名称|百分比值(不包括管道)
百分比值可以包含 1 或 2 个数字并以 % 结尾
问题是团队名称以以下数字结尾时:
沙尔克 04
所以字符串将是: schalke 041% 或 schalke 0420%
我需要提取团队名称和百分比值。 足球队名称可以是欧洲任何一支球队。

提取的最佳正则表达式解决方案是什么?
现在我有类似他的东西:
[A-Za-z 0-9']+([0-9]{1,2}%)
但如果字符串是 schalke 0412%,提取后我会得到 schalke 041 和 2%。
我正在使用 C#。

谢谢。

【问题讨论】:

  • 这个字符串中什么是静态的,什么是动态的(=可以改变)?匹配abc04的规则是什么?试试[A-Za-z ']+[0-9]{2}([0-9]{1,2}%)
  • abc04(1%|12%) 怎么样?
  • 我忘了说但它也可以是 abc12%(不带 04),数字可以是名称中的任何位置,如 4abc、ab4c、abc 等。
  • 我想你忘记了更多细节。请在问题中添加所有要求。也许你只需要(?:04)?([0-9]{1,2}%)
  • " 如果字符串是 abc0412%,提取后我得到 abc041 和 2%。" 您还应该显示返回错误结果的代码。它有助于理解需求并表明您已经亲自尝试过

标签: c# regex


【解决方案1】:

您需要在百分比组之前延迟搜索数字组。 (在+之后添加?)它将使组标记为?不太重要,它会首先尝试满足其他组的要求。

[A-Za-z 0-9']+?([0-9]{1,2}%)

【讨论】:

    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多