【问题标题】:Get Number from the string using regular expression使用正则表达式从字符串中获取数字
【发布时间】:2015-03-04 19:31:13
【问题描述】:

我正在尝试从我的错误消息中捕获数字,即类似这样的内容

Command parameter[8] '' 数据值无法转换的原因

有谁知道如何在 c# 中使用正则表达式从以下字符串中获取数字即 8?

【问题讨论】:

  • \d 另外:您的字面意思是“数字”还是“数字”?
  • 您显然已经搜索了现有答案并找到了类似stackoverflow.com/questions/4792242/… 的内容。您介意澄清一下您在应用现有答案中建议的解决方案时遇到了什么问题吗?

标签: c# .net regex


【解决方案1】:

使用以下模式:

\[([0-9]+)\]

演示:https://regex101.com/r/mE0rX2/2

编辑:如果要将匹配限制为“parameter[digits_here]”形式的字符串,请使用以下模式:

^parameter\[([0-9]+)\]$

演示:https://regex101.com/r/xE3tY4/1

Edit1: VB.net 中的代码 sn-p。希望您可以将其转换为 C#

Imports System.Text.RegularExpressions

    Module Module1

        Sub Main()
            Dim str As String : str = "parameter[8]"
            Dim regex As New Regex("^parameter\[([0-9]+)\]$")
            For Each m In regex.Matches(str)
                MsgBox(m.groups(1).ToString)
            Next
        End Sub

    End Module

输出:

【讨论】:

  • 有没有办法说找到仅在字符串'parameter[8]'中的数字?
  • var regexResult = Regex.Match("parameter[8]", @"^parameter[([0-9]+)]$");这将返回“参数 [8]”作为结果。我以为它只会返回数字 8。
  • 如果有其他词,即“命令参数 [8] 数据......”,它似乎不起作用。如果我可以从具有单词参数的句子中获取数字,有没有办法。更像是检查这句话,如果它有参数word并获取word参数括号内的数字?
  • 将模式改为“参数[([0-9]+)]”
【解决方案2】:

如果该数字将成为字符串中唯一的数字,则只需搜索一个数字即可:

\d+ - 表示匹配号码+ 一个或多个。

【讨论】:

    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多