我正在使用正则表达式从 AutoCAD MTEXT(多行)字符串中清除格式控制字符。在 MTEXT 字符串的语法中,文字反斜线字符 ( \
) 被转义,就像在 Regexp 模式 ie\\
中一样,格式控制字符串的示例(在这种情况下更改字体)如下所示:
\fArial Narrow|b0|i0|c0|p18;
我无法用我的 Repexp 模式做的是区分以下内容:
\fArial Narrow|b0|i0|c0|p18;
和
\\\fArial Narrow|b0|i0|c0|p18;
前者控制格式,而第二个只是以反向固线开头的文字字符串。
正如我在更一般的情况下看到的那样,我需要能够区分以偶数开头的字符串和\
奇数开头的字符串。为了说明如下,每一奇数行都包含一个格式化控制字符串,每一偶数行在其整体上都是一个文字字符串:
\fArial Narrow|b0|i0|c0|p18;
\\\fArial Narrow|b0|i0|c0|p18;
\\\\\fArial Narrow|b0|i0|c0|p18;
\\\\\\\fArial Narrow|b0|i0|c0|p18;
\\\\\\\\\fArial Narrow|b0|i0|c0|p18;
...
到目前为止,我对正则表达式模式的最佳尝试是:
(?:\\\\)*\\f[^;]+?\|[^;]+;
但它不起作用,因为第一组可以简单地失败并且它仍然会始终匹配。我的想法是,第一组的所有格量词(?:\\\\)*+
, 可以解决这个问题,但当然 vbscript regexp 没有所有格量词。
我很欣赏我正在尝试做的事情可能看起来做作,因为谁将\\fArial Narrow|b0|i0|c0|p18;
作为文字字符串输入?但我仍然想知道如何实现这一点。
任何想法我怎么能做到这一点?