Regexp – 如何查找由两个特定字符包围的文本部分?

我试图找出一个正则表达式替换特定字符包围的文本部分…看看这个例子:

\|(.+)\|

它找到放在两条垂直线(|)之间的任何文本,如果它在其工作的文本中只有一次出现,但是如果有两个或更多,它将找到所有文本位于第一个找到的文本之间.最后找到了| …

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

…但是在示例文本中,我只想找到’consectetur’和’tortor lectus’.如何改进regexp以排除中间的所有文本?

贪得无厌.尝试*,它应该尽可能少地匹配(非贪婪).
编辑:我脑子里充满了混乱.加一个?使它不贪婪:

\|(.*?)\|

同样适用于:

\|(.+?)\|

如果您需要1个或更多,请添加另一个点. (编辑:如果你有两个|下一个,可能不是一个好主意).

编辑2:添加了?使它不贪心

\|(..*?)\|

.

The accepted suggestion

There is perhaps an even better approach, to not match any character, but to match all but |, as in:

06003

Then you can still have the greedy +.

相关文章
相关标签/搜索