繁体   English   中英

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

[英]C# Regex match on special characters

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

示例输入:“test test 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+ - 一个或多个数字

(?'number'\\d+)-将起作用(无需逃避)。 在此示例中,包含单个数字的组是命名组'number' 如果您想要使用可选符号匹配两个组,请尝试:

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

看到它在这里工作 只是为了描述,没有什么复杂的,只是使用-? 匹配可选项-\\d+匹配一个或多个数字。 文字-匹配自己。

这是我使用的一些文档:

http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet

在该页面的评论部分,它建议使用'\\-'转义短划线

确保逃脱你的逃脱角色\\

你会逃跑的特殊意义-用正则表达式中的语言(指范围) backslash (\\) 由于反斜杠在C#文字中具有特殊含义以转义引号或成为某些字符的一部分,因此需要使用另一个backslash(\\)来转义它。 所以基本上它将是\\d+\\\\-

\\b\\d*(?=\\-)你想要展望破折号

\\ b =从一个单词边界开始\\ d =匹配任何十进制数字* =根据需要匹配前一次多次(?= \\ - )=向前看破折号

编辑格式化问题,发布后未显示斜杠

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM