我一直在靠墙试图做一个简单的正则表达式 - 我需要匹配,例如12po
其中12
部分可能是一位或两位数,然后一个可选的非字母数字,如:.-,_
等,然后是字符串po
。
最终的使用将在C#
,但我希望它也能在命令行中以常规grep
工作。我无法访问C#
,但这无济于事。
答案 0 :(得分:52)
^[0-9]{1,2}[:.,-]?po$
将任何其他允许的非字母数字字符添加到中间括号以允许对它们进行解析。
答案 1 :(得分:21)
^\d{1,2}[\W_]?po$
\d
定义了一个数字,而{1,2}
表示之前的表达式中的一个或两个,\W
定义了一个非单词字符。
答案 2 :(得分:4)
^[0-9][0-9]?[^A-Za-z0-9]?po$
您可以在此处进行测试:http://www.regextester.com/
要在C#中使用它,
Regex r = new Regex(@"^[0-9][0-9]?[^A-Za-z0-9]?po$");
if (r.Match(someText).Success) {
//Do Something
}
请记住,@是一个有用的符号,表示解析器从字面上理解字符串(例如,您不需要为一个反斜杠写\\)