文本解析问题 - 如何正确解析

时间:2014-10-09 17:15:30

标签: c# regex string parsing

我有以下文字,我试图整理'将所有类别放在他们自己的行上。我不知道如何使用正则表达式或任何其他方法。

  

名称:branding-SLES重定位:(不可重定位)

     

版本:11供应商:SUSE LINUX Products GmbH,Nuernberg,Germany

     

发布:3.20.30建立日期:2012年2月3日星期五

     

安装日期:2014年9月24日星期三建造主机:gubaidulina

     

组:System / Fhs Source RPM:branding-SLES-11-3.20.30.src.rpm

     

大小:1659许可证:BSD 3条款

     

签名:RSA / 8,2012年2月3日星期五,密钥ID e3a5c360307e3d54

     

打包程序:http://bugs.opensuse.org

     

摘要:SUSE Linux Enterprise Server品牌文件

应该是

  

名称:品牌-SLES

     

重新安置:(不可重新定位)

     

版本:11供应商:SUSE LINUX

     

Products GmbH,纽伦堡,德国

     

发布:3.20.30

     

建造日期:2012年2月3日星期五安装日期:2014年9月24日星期三

     

构建主持人:gubaidulina集团:System / Fhs

     

源RPM:品牌-SLES-11-3.20.30.src.rpm

     

大小:1659许可证:BSD 3条款

     

签名:RSA / 8,2012年2月3日星期五,密钥ID e3a5c360307e3d54
  打包:http://bugs.opensuse.org

     

摘要:SUSE Linux Enterprise Server品牌文件

我不介意事先对它进行一些编辑(删除某些空格等)以帮助实现整体目标。

1 个答案:

答案 0 :(得分:1)

这可以通过一个超过两个单词的关键字列表来完成,
否则它只使用一个单词。

使用已知单词的原因是没有任何正则表达方式来确定 短语的开头。

替换为\n$1

编辑 - 更新为正则表达式(消耗/剥离前面的空格)

 #  @"\s*\b((?:\w+|Keywords1|Keywords2|Keywords3):)"

 \s*                     # Strip all preceding whitespace(will get replaced with \n)
 \b 
 (                       # (1 start)
      (?:
           \w+           # default, single word
        |  Key words1    # or, known words or phrases
        |  Key words2
        |  Key words3 
      )
      :
 )                       # (1 end)