如何使我的正则表达式匹配集达到最小程度?

时间:2011-06-19 03:48:11

标签: javascript regex

我已经创建了一个JavaScript正则表达式来更改LaTeX渲染器的垂直条组的实例,但是当我在同一段落中有多个这样的实例时,它只影响第一个和最后一个条形,当我想喜欢它匹配每组酒吧。正则表达式是:

replace(/\|(.*)\|/g, "\\textsc{$1}");

例如,使用以下示例:

  

Lorem | ipsum | dolor sit | amet |,   consectetur | adipiscing | ELIT。

我的正则表达式产生:

  

Lorem \ textsc {ipsum | dolor sit | amet |,   consectetur | adipiscing} elit。

但我希望它尽可能地匹配所有集合,就像这样;

  

Lorem \ textsc {ipsum} dolor sit   \ textsc {amet},consectetur   \ textsc {adipiscing} elit。

我如何才能最好地纠正我的正则表达式来解决这个问题?

2 个答案:

答案 0 :(得分:5)

另一种方法是在原始正则表达式中添加单个字符:

replace(/\|(.*?)\|/g, "\\textsc{$1}");

每个人都知道*和+,但我很惊讶他们的兄弟姐妹不受欢迎 *?和??他们做同样的事情,除了他们试图尽可能少地匹配(非贪婪),而*和+总是试图尽可能多地匹配(贪婪)。

答案 1 :(得分:3)

   replace(/\|([^\|]+)\|/g, "\\textsc{$1}");