[英]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.