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