Javascript(ExtendScript)正则表达式匹配

时间:2013-07-27 10:17:18

标签: javascript regex match extendscript

我正在使用Adobe 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。

2 个答案:

答案 0 :(得分:0)

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

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

问题出在第一个捕获组中,答案出现在第二个捕获组中。需要知道的是,点与新行不匹配,这就是为什么我需要换行时用[\ s \ S]替换它。

答案 1 :(得分:0)

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

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

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

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

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