正则表达式围绕标记字符分组

时间:2017-01-15 02:03:16

标签: regex ecmascript-6

我正忙着用es6拉出这个字符串的部分。

{\fTimes New Roman|b0|i0|c0|p0;Another} => Times New Roman b0 i0 c0 p0 Another

当它更复杂时:

{\fTimes New Roman|b0|i0|c0|p0;call.me({obj});} => Times New Roman b0 i0 c0 p0 call.me({obj});

我能够可靠地工作的是:match(/[\w][0-9]/g) => ["b0", "i0", "c0", "p0"]

  • 如何抓取\f与第一个|之间的所有内容

  • 在第一个;到最后一个}之后的任何内容

2 个答案:

答案 0 :(得分:2)

你可以尝试这样详细的东西:

\{\\f(.*?)\|(\w+)\|(\w+)\|(\w+)\|(\w+)\;(.*?)\}$

演示:

https://regex101.com/r/CRp3b0/3

答案 1 :(得分:2)

这会捕获第1组和第2组中的目标:

\\f([^|]*)[^;]*;(.*)}

请参阅live demo

例如,给定输入:

{\fTimes New Roman|b0|i0|c0|p0;call.me({obj});}

群组是:

  1. Times New Roman
  2. call.me({obj});