gpt4 book ai didi

c# - RegEx.Match 未返回预期的字符串

转载 作者:行者123 更新时间:2023-12-02 05:06:31 25 4
gpt4 key购买 nike

我不熟悉 C# 中的正则表达式。我阅读了所有我能得到的东西,并试图想出一个正则表达式来从我的日志中提取日期时间值。这是我正在使用的:

value = Regex.Match("abc 2012‎-‎12‎-‎23 01:13:51.253", 
@"\b20[0-9][0-9]‎-[0-1][0-9]‎-‎[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9].\d+")
.Value;

但每次我都得到“”的值(value)。有人可以帮我看看我做错了什么吗?

提前致谢。

最佳答案

这个问题非常微妙。您的搜索字符串中有一个隐藏的控制字符。每个连字符前后都有一个 0x200eLEFT-TO-RIGHT 字符。我通过复制您的代码并检查字节来确认这一点。您还可以通过将光标放在 - 之前并按退格键来对此进行测试。

您的模式字符串也包含这些隐藏的控制字符,在第一个连字符之前以及第二个连字符之前和之后。

一旦我从搜索字符串和模式字符串中删除了该字符的所有实例,模式就会正确匹配。

最好的办法是在尝试执行任何其他操作之前从输入中删除这些字符。如果您正在按照其他人的建议进行 RegEx 或常规 DateTime 解析,则这适用。这是从字符串中删除这些字符的最简单方法:

input = input.Replace(char.ConvertFromUtf32(0x202e).ToString(), string.Empty);

关于c# - RegEx.Match 未返回预期的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16218610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com