0

我在 Adob​​e ExtendScript 环境 (Javascript) 中工作,试图匹配字符串中的一个部分,但我尝试的任何方法似乎都不起作用。这是字符串的示例:

Q1: Question 1: this is the first question?

- Answer bit
- Answer bit
- Answer bit

Q2: Question 2: this is the second question?

- Answer bit
- Answer bit
- Answer bit

Q3: Question 3: this is the third question?

- Answer bit
- Answer bit
- Answer bit

我希望能够匹配整个问答位,所以从“Qx”到 Q 的下一个实例(或 Qx+1)。我尝试的每个 RegExp 要么只是得到问题行,要么返回null.

非常感谢任何有关解决方案的帮助,我还没有清楚地破解 Reg Exp。

4

2 回答 2

0

你可以用这个模式得到它:

/Q\d+: (.+)\n\n([\s\S]+?)(?=\n\nQ\d+:|\n*$)/g

问题在第一个捕获组中,在第二个捕获组中回答。要知道的技巧是点与换行符不匹配,这就是为什么我在需要换行符时将其替换为 [\s\S] 的原因。

于 2013-07-27T10:26:29.867 回答
0

你知道前瞻。您可以在每个位置使用前瞻来检查当前字符是否开始新问题。如果没有,请消耗角色并重复。还要注意.不匹配换行符。[^]另一方面匹配任何字符:

/^Q\d+:(?:(?!Q\d+:)[^])+/gm

或者,如果您想单独捕获问题,

/^Q\d+:\s*(.*)((?:(?!Q\d+:)[^])+)/gm

现在问题在小组1中,答案在小组中2(之后您可以trim)。

于 2013-07-27T10:31:28.407 回答