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