我的应用程序将收到两个可能的字符串输入,如果它匹配以下两个字符串,我需要它regex.ismatch()返回true:
"User * has logged out"
"User * has joined"
我对正则表达式并不擅长,只是无法弄清楚如何匹配上述内容。
任何帮助都会很棒!!!
答案 0 :(得分:3)
假设您的意思是将*
字面上称为星号,则需要使用前面的\
将其转义,如下所示。
@"^User \* has (logged out|joined)$"
如果*
表示“任意用户名”,则将其替换为您用于验证用户名的正则表达式,或者由于缺少更好的用户名,您可以始终只使用.*
。< / p>
(logged out|joined)
构造被称为“交替”。除了在这种情况下强制执行交替优先之外,周围的括号还会将字符串"logged out"
或"joined"
捕获到第1组,具体取决于哪些备用匹配。
如果您不需要区分这两个事件,那么您实际上并不需要捕获此字符串,并且您可以使用非捕获组(?:logged out|joined)
,以获得轻微的性能提升。
^
和$
是所谓的锚点,分别匹配字符串的开头和结尾。在模式中正确放置这些锚点可确保它匹配整个输入字符串,而不仅仅是子字符串。
答案 1 :(得分:1)
假设*将成为用户名:
"User .+ has (joined|logged out)"
或者类似的东西(用户名中可能需要更多字符选项):
"User [A-Za-z0-1_]+ has (joined|logged out)"