正则表达式从消息中获取用户名

时间:2010-05-20 08:07:29

标签: c# regex

我的应用程序将收到两个可能的字符串输入,如果它匹配以下两个字符串,我需要它regex.ismatch()返回true:

"User * has logged out"
"User * has joined"

我对正则表达式并不擅长,只是无法弄清楚如何匹配上述内容。

任何帮助都会很棒!!!

2 个答案:

答案 0 :(得分:3)

假设您的意思是将*字面上称为星号,则需要使用前面的\将其转义,如下所示。

@"^User \* has (logged out|joined)$"

如果*表示“任意用户名”,则将其替换为您用于验证用户名的正则表达式,或者由于缺少更好的用户名,您可以始终只使用.*。< / p>

(logged out|joined)构造被称为“交替”。除了在这种情况下强制执行交替优先之外,周围的括号还会将字符串"logged out""joined"捕获到第1组,具体取决于哪些备用匹配。

如果您不需要区分这两个事件,那么您实际上并不需要捕获此字符串,并且您可以使用非捕获组(?:logged out|joined),以获得轻微的性能提升。

^$是所谓的锚点,分别匹配字符串的开头和结尾。在模式中正确放置这些锚点可确保它匹配整个输入字符串,而不仅仅是子字符串。

regular-expressions.info链接

答案 1 :(得分:1)

假设*将成为用户名:

"User .+ has (joined|logged out)"

或者类似的东西(用户名中可能需要更多字符选项):

"User [A-Za-z0-1_]+ has (joined|logged out)"