正则表达式以查找中间内容

时间:2011-06-20 10:55:05

标签: regex

我正在尝试查找 %% EndPageSetup LH(%% [Page:1] %%)= 使用正则表达式。我尝试了各种模式,但没有得到正确的输出。有人可以帮我这个吗?

  

%EndPageSetup

     

/ DeviceGray dup setcolorspace   / colspABC exch def <... scol   ......“一个VM? Pscript_WinNT_Incr开始   %% BeginResource:文件Pscript_T42Hdr   5.0 0 / asc42 0.0 d / sF42 {/ asc42~d Ji} bind d / bS42 {0 asc42 -M} bind   d / eS42 {0 asc42 neg   -M} b / Is2015?{version cvi 2015 ge} bind d / AllocGlyphStorage {Is2015?{!} {{string}   forall}?} bind d / Type42DictBegin {25   dict /FontName ~ d/Encoding ~ d 4 array astore cvx/FontBBox ~ d/PaintType 0 d/FontType 42 d/FontMatrix[1 0 0 1 0 0]d /CharStrings 256 dict /。notdef 0 d&amp;   E d / sfnts} bind d / Type42DictEnd {&amp; @   / FontName get~definefont! Ë}绑定   d / RDS {string currentfile~readtring   !} executeonly   d / PrepFor2015 {Is2015 {/ GlyphDirectory   16 dict d sfnts 0 get @ 2 ^   (glyx)putinterval 2 ^(locx)putinterval   ! !} {! !}?}绑定d / AddT42Char {Is2015?   {findfont / GlyphDirectory得到`E E!   !} {findfont / sfnts get 4 ^ get 3 ^ 2 ^

     

LH(%% [Page:1] %%)=

感谢。

3 个答案:

答案 0 :(得分:1)

这可能有用

/EndPageSetup(.*?)LH\((?:.*?)\[Page: 1\](?:.*?)\) =/

答案 1 :(得分:1)

这适用于您的示例

%%EndPageSetup(.*?)\(%%\[.*?Page.*?\]%%\) =

在此处查看online on Regexr

确保激活s(dotall)修饰符,以便可以将换行符与.匹配。

您的结果将在捕获组1中。

如何激活修饰符以及如何获得结果取决于您的语言。

答案 2 :(得分:0)

这应该有效:

(?:%%EndPageSetup)(.*\n)*(?=LH\(%%\[Page: 1\]%%\) =)

解释

  • 第三个捕获组(?=LH\(%%\[Page: 1\]%%\) =)使用正向前瞻,因此您可以匹配该组而不将其包含在结果中。

  • 第二个捕获组(.*\n)匹配包括换行符在内的所有字符。使用*,您可以匹配前面标记/组中的0个或多个。

  • 第一个非捕获组与(?:%%EndPageSetup)匹配,并从结果中省略。

注意

您也可以使用lookbehinds,但JavaScript不支持它们。