C#:确定字符串是否像这种模式; 可能的正则表达式

p.c*_*ell 2 c# regex

考虑一个如下所示的字符串:

RR1 S5 C92

这是一个乡村路线地址,用于城外邮件递送:乡村路线,站点,隔间.每个字母后跟一个数字和一个空格.通常一到三位数,但你永远不知道它可能有多少个数字!如果用户是懒惰的,他们可能已输入零,一个或多个空格.

问题: 您将使用什么正则表达式来确定给定字符串是否与此模式匹配?

它的用法是这样的:

string ruralPattern; //a regex pattern here
bool isRural = Regex.Match(someString, ruralPattern);
Run Code Online (Sandbox Code Playgroud)

更新:感谢您的建议!性能和用法将在从Web服务调用的程序集中的静态方法中.根据此模式检查的字符串最多为50个字符.该方法大约每5秒调用一次.有关保持静态的任何建议吗?非常感激!

Kel*_*sey 9

这应该工作:

^[Rr][Rr]\d+ *[Ss]\d+ *[Cc]\d+$
Run Code Online (Sandbox Code Playgroud)

或根据其他评论

^[Rr][Rr][0-9]+ *[Ss][0-9]+ *[Cc][0-9]+$
Run Code Online (Sandbox Code Playgroud)

这一切意味着什么:

  • ^ - 字符串的开头
  • [Rr] - 下一个字符必须是R或r
  • [Rr] - 下一个字符必须是R或r
  • \ d +或[0-9] + - 下一部分必须是1位或更多位数
  • (空格)* - 允许0或更多空格
  • [Ss] - 下一个字符必须是S或s
  • \ d +或[0-9] + - 下一部分必须是1位或更多位数
  • (空格)* - 允许0或更多空格
  • [抄送] - 下一个字符必须是C或c
  • \ d +或[0-9] + - 下一部分必须是1位或更多位数
  • $ - 结束字符串

可能有一个更优雅的解决方案,但这很容易阅读.

编辑:已更新以包含某些注释的输入