使用.NETRegEx检索字符串中第二个'-'后的一部分这是我的第一个堆栈信息。希望你能帮忙。我有几个字符串需要分解以备后用。这是我的意思的几个例子....fred-064528-NEEDEDfrederic-84728957-NEEDEDsam-028-NEEDED正如你在上面看到的字符串长度变化很大所以我认为正则表达式是实现的唯一方法我想。我需要的是第二个连字符('-')之后的其余字符串。我在正则表达式方面很弱,所以任何帮助都会很棒。提前致谢。像这样的东西。它将包含第二个“-”之后的任何内容(换行符除外),包括“-”符号。varexp=@"^w*-w*-(.*)$";varmatch=Regex.Match("frederic-84728957-NEE-DED",exp);if(match.Success){varresult=match.Groups[1];//结果是NEE-DEDConsole.WriteLine(result);编辑:我回答了另一个与此相关的问题。除了,它要求一个LINQ解决方案,我的答案如下,我觉得很清楚。皮条客我的LINQ:学习练习基于另一篇文章varresult=String.Join("-",inputData.Split('-').Skip(2));或varresult=inputData.Split('-').Skip(2).FirstOrDefault();//如果最后一部分是NEE-DED则只返回NEE。正如其他SO线程中提到的,这不是最快的方法。只是提供一个不使用正则表达式的替代方案:foreach(stringsinlist){intx=s.LastIndexOf('-')stringsub=s.SubString(x+1)}添加验证风格。如果它们是较大文本的一部分:(w+-){2}(w+)如果有整行并且您知道您没有其他连字符,您也可以使用:[^-]*$如果您有其他选择要将每一行作为字符串,请使用split(同样,取决于您是否需要额外的连字符,您可以省略count参数,或使用LastIndexOf):string[]tokens=line.Split("-".ToCharArray(),3);字符串s=tokens.Last();这应该有效:.*?-.*?-(.*)这应该可以解决问题:([^-]+)-([^-]+)-(.*?)$正则表达式模式将是(?.*)?-(?.*)?-(?.*)?(s|$)那么您可以获得命名组“second”以在第二个连字之后获得第一个测试,或者您可以执行一个字符串。split('-')andget2itemfromthearray以上是C#学习教程:Using.NETRegExtoretrievepartofastringafterthesecond'-'如果所有共享内容对你有用,你需要了解更多C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
