正则表达式用于单个字符之间的所有出现

时间:2017-06-02 15:53:47

标签: regex python-3.x

我想找到一个正则表达式,它表示字符之间的所有出现(" |"在这种情况下)。 " |"的出现次数可能有所不同 以下是:

  

ABC | DEF | ghijk | L | mnopqrs | tuvwxyz

理想情况下,

会返回以下列表:[' def',' ghijk',' l',' mnopqrs']。

我从以下正则表达式获得的最佳结果:

"\|(.*)\|"

但这会在第一次和最后一次出现之间产生翻转,所以我想用循环解决这个问题,但肯定必须有更好的解决方案。我在Python 3中使用re模块。

谢谢!

2 个答案:

答案 0 :(得分:0)

使用以下RegEx:

(?<=\|)([a-zA-Z]+)(?=\|)

以下是一个工作示例:Regex101

这使用了一个Look-behind (?<=\|)来确保字母前面有管道和前瞻(?=\|),以确保字母后跟一个管道。

答案 1 :(得分:0)

"\|(.*)\|" 这是一个贪婪的匹配..即从第1次到最后一次出现的|符号匹配。非专业人士的贪婪是尽可能匹配的。 (仅使用*)。非贪婪尽可能少地匹配(使用*?)。

你需要的是全球非贪婪的比赛。 "\|(.*?)\|"

但对于您的用例,@ {1}}符号的拆分更合适,如@jsbueno所述