如何用正则表达式提取特定格式字符串中的目标子串?
正则匹配需求及问题
我有如下格式的字符串:
fd.s_fdsfds.na233_OVERFLOW:fdsfdsfds fds_f.dsfds.cs194_0.0-1000.0:fdsfds fdsf.dsfds.abc333_0.0-1000.0:fdsfds
我需要从中匹配出na233、cs194和abc333。
我当前写的正则表达式是:
(?<=\.)(.*)(?=_.*:)
但这个表达式匹配到的结果是s_fdsfds.na233、dsfds.cs194和dsfds.abc333,不符合预期。
以下是实现该需求的C#等效代码:
string s = "fds_f.dsfds.cs194_0.0-1000.0:fdsfds"; int colPos = s.IndexOf(':'); int underscore = s.LastIndexOf('_', colPos); int prevdot = s.LastIndexOf('.', underscore); Console.WriteLine(s.Substring(prevdot+1, underscore - prevdot -1));
内容的提问来源于stack exchange,提问作者user10765213
相关产品推荐
相关产品推荐

