我想从字符串中提取状态,直到我找到了一个时间跨度。我的输入类似于“开始时的东西,但没有确定的关键字。状态:我的状态在这里哪个可以是除了时间跨度23:59:01等等。我想在状态后提取字符串: 直到 23:59:01 。我怎么能通过正则表达式实现这一点。这个 23:59:01 是一个时间跨度,它总是在这个格式 hh:mm:ss
答案 0 :(得分:1)
您的规范尚不清楚,但您可以尝试STATUS: (.*?) \d{2}:\d{2}:\d{2}
;这会将您想要的部分捕获到组1中。
如果.
也匹配换行符,您可能需要启用单行。
在C#中,你会写这样的东西(see it on ideone.com):
Regex r = new Regex(@"STATUS: (.*?) \d{2}:\d{2}:\d{2}", RegexOptions.Singleline);
foreach (Match match in r.Matches(text)) {
Console.WriteLine("[[[" + match.Groups[1] + "]]]");
}
RegexOptions.Singleline
允许.
匹配任何字符,因此当所需字符串包含换行符时,它会起作用。
这是为了防止您需要多个匹配(如上所示)。在下面的示例中,只有一个A.*Z
(贪婪)。
---A--Z----A----Z---
^^^^^^^^^^^^^^
A.*Z
答案 1 :(得分:0)
试试这个:
STATUS:[\sa-zA-Z]+?[:\d]{8}