【问题标题】:How to get values inbetween specific character如何获取特定字符之间的值
【发布时间】:2013-08-16 11:30:47
【问题描述】:

我需要在 之间以及 > 和下一个

<MES>MID=13/08/15§13:22:17+08<RB01>I=180.8U=3.87<SET01>ALVU=20.00

我想要的输出是:

MID=13/08/15§13:22:17+08
RB01
I=180.8U=3.87
SET01
ALVU=20.00

这可以通过使用 RegEx 来实现吗?

我已经尝试了几个小时,请注意,我的正则表达式知识不是我想要的 :-) 所以任何帮助都将不胜感激。

【问题讨论】:

  • 你怎么知道在哪里插入文本?我认为一些符号已经丢失。您可以在问题中使用一些标记,以便更清楚
  • I've been trying for hours 请提供您尝试过的内容。这样我们就可以改进它并纠正你的错误。
  • MES 不应该也出现在输出中吗?
  • 另外,如果你真的想提高你的正则表达式技能,this tutorial 应该能让你快速上手。
  • 您可能不需要正则表达式 - 这是什么语言?

标签: c# regex


【解决方案1】:

此表达式将匹配这些组:

([^<>]+)

你可以试试:

http://rubular.com/r/zQ64Z1heI1

您可以将括号“(”和“)”之间的“值”恢复为具有匹配器的组(在 Java 或 Ruby 中)。其他语言将有不同的语法来做同样的事情。

【讨论】:

  • 哇,这太酷了!不知道那个网站:) 谢谢! :D
【解决方案2】:

试试这个模式:

/[^<>]*/g

【讨论】:

    【解决方案3】:

    如果在输出中包含 MES 不是问题,您可以非常轻松地完成此操作。

    没有正则表达式:

    string input = "<MES>MID=13/08/15§13:22:17+08<RB01>I=180.8U=3.87<SET01>ALVU=20.00";
    string output = input.Replace(">", "\r\n").Replace("<","\r\n").Trim();
    

    使用正则表达式:

    string input = "<MES>MID=13/08/15§13:22:17+08<RB01>I=180.8U=3.87<SET01>ALVU=20.00";
    string output = Regex.Replace(input, @"[<>]", "\r\n").Trim();
    

    对于这两个,输出是相同的:

    MES
    MID=13/08/15§13:22:17+08
    RB01
    I=180.8U=3.87
    SET01
    ALVU=20.00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多