我正在解析聊天输出以获取用户名。这可能是输出的样子:
<Darker> MC_BOT sethome
(From Darker): MC_BOT exit
我需要匹配用户名和字符串中的命令内容。从两个字符串中获取这些数据很容易:
^(<([A-Za-z0-9_]+)>|\\(From ([A-Za-z0-9_]+)\\):) MC_BOT ([a-z]+)( [a-zA-Z0-9 ]+)?$
|<Darker> |(From Darker): |sethome
问题是,<Darker>
输出字段 2 被使用,但(From Darker)
解析器使用字段 3。
<Darker> MC_BOT command parameters
1: <Darker>
2: Darker - field 2!
3:
4: command
5: parameters
(From Darker): MC_BOT command parameters
1: (From Darker):
2:
3: Darker - field 3!
4: command
5: parameters
那么我应该如何编写这个正则表达式以使其在同一字段中包含用户名?另外,我可以让正则表达式忽略(...|...)
吗?我只需要匹配用户名,而不是<username>
or (From username):
。