我在字符串解析方面没什么帮助......这里是来自FaceID的结果字符串:
Return(result=\"success\" dev_id=\"6714113100001517\" total=\"24\"\r\n
time=\"2014-06-16 17:56:44\" id=\"399\" name=\"\" workcode=\"0\"
status=\"0\" authority=\"0X55\" card_src=\"from_check\"\r\n
time=\"2014-06-16 17:57:45\" id=\"399\" name=\"\" workcode=\"0\"
status=\"0\" authority=\"0X55\" card_src=\"from_check\"\r\n
time=\"2014-06-16 17:57:58\" id=\"399\" name=\"\" workcode=\"0\"
status=\"2\" authority=\"0X55\" card_src=\"from_check\"\r\n
time=\"2014-06-16 17:58:02\" id=\"399\" name=\"\" workcode=\"0\"
status=\"1\" authority=\"0X55\" card_src=\"from_check\"\r\n
time=\"2014-06-16 17:58:04\" id=\"399\" name=\"\" workcode=\"0\"
status=\"0\" authority=\"0X55\" card_src=\"from_check\"\r\n
time=\"2014-06-16 17:58:19\" id=\"399\" name=\"\" workcode=\"0\"
status=\"2\" authority=\"0X55\" card_src=\"from_check\"\r\n
time=\"2014-11-29 13:23:36\" id=\"399\" name=\"\" workcode=\"0\"
status=\"0\" authority=\"0X55\" card_src=\"from_check\"\r\n
time=\"2014-11-29 13:23:46\" id=\"399\" name=\"\" workcode=\"0\"
status=\"2\" authority=\"0X55\" card_src=\"from_check\"\r\n
time=\"2014-11-29 13:23:49\" id=\"399\" name=\"\" workcode=\"0\"
status=\"0\" authority=\"0X55\" card_src=\"from_check\"\r\n)
我知道如何遍历字符串并匹配令牌,但我想知道这种类型的字符串是否有任何正则表达式?或者,如果将其转换为XML或JSON很容易?如果是这样,表现会更好吗?
我想要Time,ID,Name,Workcode,status,authority,card_src的单独值 - 例如列表或对象集合。
答案 0 :(得分:0)
要分隔您可以使用的值:
\b(time|id|name|workcode|status|authority|card_src)=\\"(.*?)\\"
在捕获第1组时,您会得到名称 在捕获组2时,您将获得该值。
答案 1 :(得分:0)
当然 - 你可以做一个正则表达式:
time=\\"([^\\]+)\\" id=\\"([^\\]+)\\" name=\\"([^\\]+)\\" workcode=\\"([^\\]+)\\" status=\\"([^\\]+)\\" authority=\\"([^\\]+)\\" card_src=\\"([^\\]+)\\"
然后遍历每个匹配中的组以查看匹配的值(这将是特定于语言的代码)
在上面的正则表达中
\\
代表\
(反斜杠必须转义)
( )
表示捕获组(因此可以在结果中引用捕获的值
[^\\]+
表示不 \
重复一次或多次的字符类
这是循环匹配以提取捕获值的c#代码示例:
var input = "your input string... cant be bothered to repeat it here!";
var pattern= @"time=\\""([^\\]+)\\"" id=\\""([^\\]+)\\"" name=\\""([^\\]+)\\"" workcode=\\""([^\\]+)\\"" status=\\""([^\\]+)\\"" authority=\\""([^\\]+)\\"" card_src=\\""([^\\]+)\\""";
var matches = Regex.Matches(input, pattern);
foreach (var match in matches)
{
Console.WriteLine("time is: {0}", match.Groups[1]);
Console.WriteLine("id is: {0}", match.Groups[2]);
Console.WriteLine("name is: {0}", match.Groups[3]);
// and so on...
}