【问题标题】:Regular Expression to get username from messages正则表达式从消息中获取用户名
【发布时间】:2010-05-20 08:07:29
【问题描述】:

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

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

我不太擅长正则表达式,只是不知道如何匹配上述内容。

任何帮助都会很棒!!!

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    假设您的意思是将* 字面上匹配为星号,那么您需要使用前面的\ 对其进行转义,如下所示。

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

    如果 * 的意思是“任何用户名”,则将其替换为您用于验证用户名的正则表达式,或者如果没有更好的方法,您始终可以只使用 .*

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

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

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

    regular-expressions.info 链接

    【讨论】:

      【解决方案2】:

      假设 * 将是一个用户名:

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

      或者可能是这样的(可能需要用户名中的更多字符选项):

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        • 2014-03-31
        • 2013-05-09
        • 1970-01-01
        • 1970-01-01
        • 2020-07-24
        相关资源
        最近更新 更多