我知道这个东西已经被讨论了很多,但是我在尝试匹配以下内容时遇到了问题......
示例输入:“测试测试 310-315”
我需要一个正则表达式来识别数字后跟破折号,并返回 310。不过,我如何在正则表达式中包含破折号。所以最终的匹配结果将是:“310”。
非常感谢-kcross
编辑:此外,我将如何做同样的事情,但前面有破折号,但是也考虑到破折号后面的数字可能是负数......没想到这个当我立即写下问题时。例如:“test test 310--315”返回-315,“test 310-315”返回315。
最佳答案
Regex regex = new Regex(@"\d+(?=\-)");
\d+
- 寻找一位或多位数字
(?=\-)
- 确保后面跟一个破折号
@
只是消除了对反斜杠进行转义以使编译器满意的需要。
此外,您可能需要这个:
\d+(?=\-\d+)
这将检查一个或多个数字,后跟一个破折号,然后是一个或多个数字,但只匹配第一组。
为回应您的评论,这里有一个正则表达式,用于检查 -
后面的数字,同时考虑潜在的负数 (-):
Regex regex = new Regex(@"(?<=\-)\-?\d+");
(?<=\-)
- 否定后视,它将检查并确保前面有一个 -
\-?
- 检查零个或一个破折号
\d+
- 一个或多个数字
关于C# 正则表达式匹配特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12393826/