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

dw1jzc5e  于 2023-05-08  发布在  C#
关注(0)|答案(5)|浏览(256)

我知道这件事已经被谈论了很多,但我有一个问题试图匹配以下。
输入示例:“测试测试310-315”
我需要一个regex表达式,它可以识别后面跟一个破折号的数字,并返回310。我如何在正则表达式中包含破折号。那么最终的匹配结果就是:“310”
非常感谢- kcross
编辑:还有,我怎么做同样的事情,但前面有破折号,* 但 * 也考虑到破折号后面的数字可能是负数......当我马上写问题的时候,我没有想到这一点。例如:“test test 310--315”返回-315,“test 310-315”返回315。

vsnjm48y

vsnjm48y1#

Regex regex = new Regex(@"\d+(?=\-)");

\d+-查找一个或多个数字
(?=\-)-确保后跟破折号
@只是消除了转义反斜杠以保持编译器满意的需要。
此外,您可能需要以下内容:

\d+(?=\-\d+)

这将检查一个或多个数字,后跟一个破折号,后跟一个或多个数字,但只匹配第一个集合。

作为对您评论的回应,这里有一个正则表达式,它将检查-后面的数字,同时考虑潜在的负数(-):

Regex regex = new Regex(@"(?<=\-)\-?\d+");

(?<=\-)-负向后看,将检查并确保存在前一个-
\-?-检查零个破折号或一个破折号
\d+-一个或多个数字

pb3s4cty

pb3s4cty2#

(?'number'\d+)-会工作,不需要逃逸。在本例中,包含单个数字的组是命名组'number'。如果要使用可选符号匹配两个组,请尝试:

@"(?'first'-?\d+)-(?'second'-?\d+)"

简单描述一下,没有什么复杂的,只是使用-?匹配一个可选的-\d+匹配一个或多个数字。文字-匹配自身。

9o685dep

9o685dep3#

下面是我使用一些文档:
http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet
在该页面的评论部分,它建议使用'\-'转义破折号
确保转义转义字符\

nc1teljy

nc1teljy4#

您可以使用backslash (\)来转义-在regex中的特殊含义(表示范围)。由于反斜杠在C#文字中有特殊的含义,可以转义引号或成为某些字符的一部分,所以你需要用另一个backslash(\)转义。所以本质上它是\d+\\-

tkclm6bt

tkclm6bt5#

\b\d*(?=\-)你会想要向前看的破折号
\B =从单词边界开始\d =匹配任何十进制数字 * =根据需要匹配前一个数字(?=-)=向前看破折号
因格式问题编辑,发布后未显示斜线

相关问题