c# - 从括号之间提取数字

标签 c# regex

我有一个正则表达式,用于从两个括号之间提取数字。在我们自定义输入字符串之前,它一直运行良好。现在,如果在字符串的其他地方找到了一个数字,则取最后一个数字。我的表达如下:

int icorrespid = Convert.ToInt32(Regex.Match(subject, @"(\d+)(?!.#\d)", RegexOptions.RightToLeft).Value);

如果我发送字符串 This (12) is a test,它工作正常,提取 12。但是,如果我发送 This (12) is a test2 ,结果是 2。我意识到我可以将 RightToLeft 更改为 LeftToRight,这将修复此实例,但我只想获取括号之间的数字。

我相信这对于任何具有任何正则表达式经验的人(显然不是我)来说都会很容易。我希望你能告诉我如何纠正这个问题以获得我想要的结果,同时也简要解释一下我做错了什么,这样我就有希望改进。

谢谢。

附加信息

我感谢所有回复。我采纳了商定的建议,并尝试了以下每种格式:

int icorrespid = Convert.ToInt32(Regex.Match(subject, @"(\(\d+\))(?!.#\d)", RegexOptions.RightToLeft).Value);

int icorrespid = Convert.ToInt32(Regex.Match(subject, @"(\(\d+\))", RegexOptions.RightToLeft).Value);

int icorrespid = Convert.ToInt32(Regex.Match(subject, @"\(\d+\)", RegexOptions.RightToLeft).Value);

不幸的是,对于每一个,我都得到一个异常,指出输入字符串的格式不正确。我以前不明白。我确信我可以在一两分钟内不使用正则表达式就解决这个问题,但是我的固执开始了。

谢谢大家的评论。

最佳答案

你需要在正则表达式中转义括号,因为它们意味着什么

@"(\(\d+\))(?!.#\d)

或者,如果您实际上并不打算让您的电话号码被抓到一组

@"\(\d+\)(?!.#\d)

关于c# - 从括号之间提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23937487/

相关文章:

java - 什么是用空格替换所有 "System.out.println()"的正则表达式?

c# - 如何在上下文菜单条中设置组合框的默认项目?

C# 在运行循环时将 int 数字添加到列表

c# - ASP.NET 按钮单击事件错误

regex - 在 JSP EL 中使用正则表达式

php - 为什么这个正则表达式在 Ubuntu 上传递,但在 Mac OS X 上不传递

javascript - 如何维护 JSON 中的 <br/> 标签?

c# - 是否可以使 FolderBrowserDialog 的默认路径显示在库中而不是实际磁盘中?

c# - 如何不允许一次按键收到多个击键?

python - 确定任何正则表达式的输入类型