正则表达式在RTF中提取带有排除的文本部分

时间:2012-07-05 12:16:00

标签: regex rtf

使用正则表达式我需要查找以 \pard 开头并以空格结尾的所有内容,但同时还没有 \intbl 在它。

接下来,您可以看到RTF文本文件。 非常感谢你。

{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil Lucida Console;}{\f1\fnil\fcharset0 Lucida Console;}{\f2\fnil\fcharset0 Arial Black;}}
{\colortbl ;\red0\green0\blue0;}
{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\trowd\trgaph10\trleft-32\trrh240\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3
\clbrdrl\brdrw15\brdrs\brdrcf1\clbrdrt\brdrw15\brdrs\brdrcf1\clbrdrr\brdrw15\brdrs\brdrcf1\clbrdrb\brdrw15\brdrs\brdrcf1 \cellx966\clbrdrl\brdrw15\brdrs\brdrcf1\clbrdrt\brdrw15\brdrs\brdrcf1\clbrdrr\brdrw15\brdrs\brdrcf1\clbrdrb\brdrw15\brdrs\brdrcf1 \cellx2000\pard\intbl\qr\cf1\lang11274\f1\fs16 val1\cell val2\cell\row\trowd\trgaph10\trleft-32\trrh240\trpaddl10\trpaddr10\trpaddfl3\trpaddfr3
\clbrdrl\brdrw15\brdrs\brdrcf1\clbrdrt\brdrw15\brdrs\brdrcf1\clbrdrr\brdrw15\brdrs\brdrcf1\clbrdrb\brdrw15\brdrs\brdrcf1 \cellx966\clbrdrl\brdrw15\brdrs\brdrcf1\clbrdrt\brdrw15\brdrs\brdrcf1\clbrdrr\brdrw15\brdrs\brdrcf1\clbrdrb\brdrw15\brdrs\brdrcf1 \cellx2000\pard\intbl\qr val3\cell val4\cell\row\pard\li-30\cf0\lang0\f0\fs24\par
\lang11274\b\f2\fs48 Texto linea1\b0\f1\fs24\par
\par
Texto linea2\lang0\f0\par
}

1 个答案:

答案 0 :(得分:1)

那将是

\\pard(?:(?!\\intbl)[^ ])*[ ]

<强>解释

\\pard       # Match "\pard".
(?:          # Try to match...
 (?!\\intbl) #  (unless we're at the start of the string "\intbl")
 [^ ]        #  any character except space
)*           # ...any number of times.
[ ]          # Then match a space.

在您的示例文件中,仅匹配\pard\li-30\cf0\lang0\f0\fs24\par