1

我有以下文字

|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)

4

3 回答 3

0

使用另一个组来捕获|2 Style Indented Normal + Courier New|3 Style Indented Normal + Courier New。如果需要,您甚至可以为此使用非捕获组 (?:)。

于 2013-08-07T09:51:37.443 回答
0

试试这个(.NET):

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

或者这个:

(?<=\|\d [a-zA-Z+ ]*\t)[\w ]*
于 2013-08-07T10:09:21.480 回答
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 测试正确打印出:

T201_LLR_001
Shall accept the three pointers.
SSC_01_SRS_0001
于 2013-08-07T13:03:40.230 回答