0

日志行格式:

Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx.

我想从'_m'行尾提取,'_'删除'm'.

正则表达式的新手...

谢谢!

4

3 回答 3

1

如果您的工具/语言支持后视,则此方法有效:匹配第一个_muntil EOL。也忽略领先_

(?<=_)m.*

用 grep 测试:

kent$  echo "Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx."|grep -Po '(?<=_)m.*' 
mxxxxxmmxx [XXX xxxx.
于 2013-04-05T16:53:28.393 回答
1

sed

sed -n 's/^.*_\(m.*$\)/\1/p' file
于 2013-04-05T16:55:19.680 回答
0

这很容易:

此示例是用 C# 编写的,但是正则表达式非常通用,可能在任何地方都可以使用:

Regex regex = new Regex(@"_(m.*)");  // If you look for _M the regex should be @"_(M.*)"

Match match = regex.Match(logLine);
if (match.Success)
    Console.WriteLine(match.Groups[1].Value);

希望这对您的追求有所帮助。

于 2013-04-05T16:52:15.670 回答