【问题标题】:Conditional splitting条件拆分
【发布时间】:2014-08-11 09:55:04
【问题描述】:

我正在用 C# 编写一个 .cpp 解析器。我需要一些操作员拆分文件。但是,我有两个分隔符,-->

当文件前面没有- 时,我想用> 拆分文件,否则> 分隔符也会拆分->

我应该使用正则表达式还是其他解决方案?

【问题讨论】:

  • 您的问题非常广泛。你都尝试了些什么?也许我们可以帮助您解决遇到的错误/异常?
  • 是的,正则表达式将是最简单的 IMO
  • Lookaround 是您要找的。​​span>
  • C++ 是出了名的难以解析。你可能最好使用解析器生成器(或者更好的是,像 clang 这样的现有库),而不是从头开始自己编写。
  • 不,您不想在 C# 中编写 .cpp 解析器。你想使用Clang

标签: c# c++ regex parsing


【解决方案1】:

在 C# 中String.Split 就足够了:

  String source = "1->2>3->4->5>6"; 

  // "1", "2", "3", "4", "5", "6"
  var items = source.Split(new String[] { "->", ">" }, StringSplitOptions.None);

【讨论】:

  • 但是解析器/扫描器也应该告诉你操作符。
【解决方案2】:

只需展示如何使用正则表达式:

String source = "1->2>3->4->5>6";
//replace all > to ->
source=Regex.Replace(source,"(?<!-)>","-$0");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多