Regex 如何找到由两个特定字符包围的文本部分?

Regex 如何找到由两个特定字符包围的文本部分?,regex,Regex,我试图找出一个regexp,它可以替换由特定字符包围的文本部分。。。看看这个例子: \|(.+)\| 它会查找放置在两条垂直线(|)之间的任何文本,如果文本中只有一条,它会查找,但如果有两条或更多,它会查找第一条和最后一条之间的所有文本 Lorem ipsum dolor sit amet, |consectetur| adipiscing elit. Aliquam nec |tortor lectus|. Nunc sodales ornare varius. Quisque pharet

我试图找出一个regexp,它可以替换由特定字符包围的文本部分。。。看看这个例子:

\|(.+)\|
它会查找放置在两条垂直线(|)之间的任何文本,如果文本中只有一条,它会查找,但如果有两条或更多,它会查找第一条和最后一条之间的所有文本

Lorem ipsum dolor sit amet, |consectetur| adipiscing elit. Aliquam nec |tortor lectus|. Nunc sodales ornare varius. Quisque pharetra porttitor ligula. 

。。。然而,在示例文本中,我只希望找到“Concetetur”和“tortor lectus”。我需要如何改进regexp以排除中间的所有文本?

该+是贪婪的。尝试*,它应该尽可能少地匹配(非贪婪)。 编辑:我脑子里乱七八糟的。添加一个?要使其不贪婪:

\|(.*?)\|
+也是如此:

\|(.+?)\|
如果需要+中的1或更多,请添加另一个点。(编辑:如果你有两个|下一个|的话,这可能不是一个好主意)

编辑2:添加了?让它不贪婪

\|(..*?)\|

被接受的建议 也许还有更好的方法,不匹配任何字符,而是匹配除|之外的所有字符,如:

\|([^|]+)\|
那么你仍然可以拥有贪婪+


谢谢你的快速帮助!第三个版本很有魅力!:)顺便说一句,我可能混淆了不同版本的reg expr libs。*可能也是贪婪的,除非你加一个?在它之后。在这方面,+也是如此。所以它们只是{0,}和{1,}的糖。