需要正则表达式来删除模式/字符串

时间:2013-08-07 09:27:08

标签: regex

我有以下文字

  

| 1 Style Indented Normal + Courier New T201_LLR_001 | 2 Style Indented Normal + Courier New将接受三个指针。| 3 Style Indented Normal + Courier New SSC_01_SRS_0001

我需要转换此文本以获得三个单独的输出

  
      
  • T201_LLR_001
  •   
  • 应接受三个指针
  •   
  • SSC_01_SRS_0001
  •   

我使用了以下常规(\S+_LLR_\d+)(.+)\t(SSC_.+)*

获取以下输出

  
      
  • T201_LLR_001
  •   
  • | 2 Style Indented Normal + Courier New接受三个指针。| 3 Style Indented Normal + Courier New
  •   
  • SSC_01_SRS_0001
  •   

但是,我需要摆脱文本|2 Style Indented Normal + Courier New" and "|3 Style Indented Normal + Courier New

正则表达式有可能吗? 我不知道如何使用(?!TEXT)

3 个答案:

答案 0 :(得分:0)

使用其他群组捕获|2 Style Indented Normal + Courier New|3 Style Indented Normal + Courier New。如果需要,您甚至可以使用非捕获组(?:)。

答案 1 :(得分:0)

试试这个(.NET):

(?<=\|\d \w* \w* \w* \+ [a-z-A-Z0-9 ]*\t)[\w ]*

或者这个:

(?<=\|\d [a-zA-Z+ ]*\t)[\w ]*

答案 2 :(得分:0)

对于那些没有注意到的人,我看到你想要的字体和字符串之间有一个标签,这使问题变得相当容易。

这可以给你你想要的东西:

([^_\s]+_LLR_\d+)[^\t]*\t([^|]*)[^\t]*\t(SSC_.+)

<强>解释

我将\S(不是空格)更改为[^_\s](不是下划线或空格)。

然后你消耗T201_LLR_001

然后您将消费所有内容,包括下一个标签,其中包含|2 Style Indented Normal + Courier New

然后,您将使用|之前的所有内容,Shall accept the three pointers.将其存储在一个组中,并将其放在括号中。

然后您将消费所有内容,包括下一个标签,其中包含|3 Style Indented Normal + Courier New

然后您使用SSC_01_SRS_0001并将其放入一个组中。

Java test正确打印出来:

T201_LLR_001
Shall accept the three pointers.
SSC_01_SRS_0001