我想找到一个正则表达式,它表示字符之间的所有出现(" |"在这种情况下)。 " |"的出现次数可能有所不同 以下是:
理想情况下,ABC | DEF | ghijk | L | mnopqrs | tuvwxyz
会返回以下列表:[' def',' ghijk',' l',' mnopqrs']。
我从以下正则表达式获得的最佳结果:
"\|(.*)\|"
但这会在第一次和最后一次出现之间产生翻转,所以我想用循环解决这个问题,但肯定必须有更好的解决方案。我在Python 3中使用re模块。
谢谢!
答案 0 :(得分:0)
使用以下RegEx:
(?<=\|)([a-zA-Z]+)(?=\|)
以下是一个工作示例:Regex101
这使用了一个Look-behind (?<=\|)
来确保字母前面有管道和前瞻(?=\|)
,以确保字母后跟一个管道。
答案 1 :(得分:0)
"\|(.*)\|"
这是一个贪婪的匹配..即从第1次到最后一次出现的|
符号匹配。非专业人士的贪婪是尽可能匹配的。 (仅使用*
)。非贪婪尽可能少地匹配(使用*?
)。
你需要的是全球非贪婪的比赛。
"\|(.*?)\|"
但对于您的用例,@ {1}}符号的拆分更合适,如@jsbueno所述