C# 正则表达式匹配特殊字符

标签 c# regex

我知道这个东西已经被讨论了很多,但是我在尝试匹配以下内容时遇到了问题......

示例输入:“测试测试 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/

相关文章:

c# - 类型转换和转换有什么区别?

ruby - 执行许多不同 gsub 操作的最快方法?

ruby - 使用 Ruby 扫描方法,捕获组无法按预期工作

python - regex/beautifulsoup 如何从html表中提取列的所有值?

android - 没有符号编辑框的货币输入

java - 正则表达式匹配字母字符

c# - 获取进程 ID 时出错

c# - 类静态成员的奇怪行为——这怎么可能?

c# - 将 C# 转换为 Ruby - HMAC SHA256 函数

c# - 如何在运行时移动 mousemove 上的控件?