正则表达式,从字符串的开头读取

时间:2013-05-14 10:54:35

标签: c# regex

我需要一些正则表达式的帮助,我正在尝试开发与从邮件中检索Jira签入ID相关的问题。我需要能够给出这个字符串:

WYP-857, GL-1723 and then some message GTY-817 about the check-in.

匹配值WYP-857GL-1723。标准是我必须匹配两到五个字母字符,然后是连字符,然后是三个或更多数字。这些单独的匹配必须从字符串的开头开始,并且可以有逗号,分号或空格分隔的多个匹配项。在这种情况下,GTY-817不应匹配,因为它不在字符串的开头。到目前为止我所做的所有尝试似乎都完全匹配WYP-857, GL-1723而没有返回个别匹配。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

你可以试试这个正则表达式

^[a-zA-Z]{2,5}-\d{3,}([,;\s][a-zA-Z]{2,5}-\d{3,})*

答案 1 :(得分:0)

这应该很简单:

(^|,\ )[A-Z]{2,5}-\d{3}

http://tinyurl.com/clt367h

答案 2 :(得分:0)

尝试这样的事情:

^[a-zA-Z]{2,5}-[0-9]{3}[0-9]*(, [a-zA-Z]{2,5}-[0-9]{3}[0-9]*)+

这应返回初始WYP-857, GL-1723,然后您可以使用其他Regex匹配([a-zA-Z]{2,5}-[0-9]{2}[0-9]*)或使用Split将其分开。

不可否认,使用此方法,您仍需要执行两个操作,以实际获取单独ID的列表。