【发布时间】:2020-02-04 10:48:53
【问题描述】:
我需要找到匹配的结果,即使用正则表达式的字符串。让我使用示例输入来演示场景。
string input= "xb-cv_107_20190608_032214_006"; // <-1st case
string input = "yb-ha_107_20190608_032214_006__foobar"; // <-2nd case
string input= "fv_vgf_ka01mq3286__20190426_084135_039"; // <-3rd case
string input="fv_vgf_ka01mq3286__2090426_084135_039"; //<-4th case
对于第一种情况输入,需要输出=“xb-cv_107_20190608_032214_006”。
对于第二种情况输入,需要输出=“yb-ha_107_20190608_032214_006”。
对于第 3 种情况输入,需要输出 = "fv_vgf_ka01mq3286__20190426_084135_039"。
对于第 4 种情况的输入,输出 required= null 因为模式不匹配。
获取输出的过程是:
- 使用正则表达式检查模式是否以
_后跟 8 位小数后跟“_”结尾 后跟 6 位小数,后跟 3 位小数 - 或者使用正则表达式检查模式是否以
_后跟 8 位小数后跟_后跟 6 位小数后跟 3 位小数后跟__后跟任何随机结尾。
到目前为止,我已经想出了这个正则表达式:
string pattern = @".+[_][0-9]{8}[_][0-9]{6}[_][0-9]{3}([_]{2})?";
var result = Regex.Match(input, pattern)?.Groups[0].Value ;
【问题讨论】:
-
好吧,不..输出是在忽略 __ 之后的部分后出现的,如果它存在,则它与输入相同
-
看来你需要
var result = Regex.Replace(input, @"^(.+_[0-9]{8}_[0-9]{6}_[0-9]{3})__.*$", "$1"); -
@WiktorStribiżew 它的工作原理谢谢..你可以添加作为这个问题的答案