我正在使用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。
答案 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
)。