使用正则表达式提取两个字符内的文本

时间:2017-06-21 23:35:52

标签: regex

我试图从一组字符串中提取一些文本。我对这些字符串有三种情况

  • X | A | ÿ

  • A | ÿ

  • A

其中A是我要提取的文字。我尝试使用(?:\|)(.*?)(?:\|)只能在第一种情况下使用,并尝试将我在其他问题中看到的几个选项结合起来但到目前为止没有运气,如果我匹配案例,另一个案件不会匹配。

2 个答案:

答案 0 :(得分:1)

如果我理解正确,请尝试:

(?:.*?\|([^\|]+)\|.*?)|(^[^\|]+)

结果将在捕获组1或组2

答案 1 :(得分:0)

我认为这将有效(?:^|(?<=\|))\s*(A)\s*(?:(?=\|)|$)

它在捕获组1中找到A子字符串

这肯定是需要断言的情况 我不认为没有他们会有效。

解释:

 (?:
      ^                             # BOS
   |                              # or,
      (?<= \| )                     # | behind
 )
 \s*                           # optional wsp trim
 ( A )                         # (1), What your looking for
 \s*                           # optional wsp trim
 (?:
      (?= \| )                      # | ahead
   |                              # or,
      $                             # EOS
 )