作者xvid ()
看板RegExp
标题[问题] 请问例外的写法
时间Thu Mar 22 00:42:07 2012
语言:C++ TR1 Regular Expressions
环境:gdipp内的xml设定档
http://code.google.com/p/gdipp/wiki/SETTING_Beta
由於原本该程式设计的逻辑为exclusion list(不渲染的黑名单),
我想利用RE写出白名单的表示式,不过只找到'^'於[]有except的作用,
但只能对[]内的字元作成例外条件。
换句话说,有无写法可以对字串作为例外条件,也就是某字串以外的输入皆符合?
这是一个网站提供的范例
((?!(notepad|mspaint)\.exe).)*
但执行结果不正确:(
有请各位帮忙!谢谢!
不好意思,似乎我表达的有些模糊,下面作点补充。
gdipp是个字体渲染的软体,能以编辑xml内容作设定,其中部分内容如下:
<exclude>
<process>conhost\.exe</process>
<process>dwm\.exe</process>
<process>logonui\.exe</process>
<process>service\.exe</process>
<process>spoolsv\.exe</process>
<process>svchost\.exe</process>
<process>taskhost\.exe</process>
<process>userinit\.exe</process>
<process>werfault\.exe</process>
<process>wininit\.exe</process>
<process>winlogon\.exe</process>
</exclude>
上述的描述是让conhost.exe、dwm.exe等系统执行程序不使用gdipp的渲染。
由於我只想对特定一两个程式使用gdipp渲染字体,依照上述的写法,我必须把所有可能的执行档名称加入上面的列表,将会十分不方便。
所以想利用该程式支援的RE表达(例如:notepad.exe及mspaint.exe以外的所有*.exe)加入上述的exclude process
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.226.26.220
※ 编辑: xvid 来自: 125.226.26.220 (03/22 00:46)
1F:→ mars90226:你直接在程式中改成不符合的就可以了吧? 03/22 14:41
2F:→ xvid:不符合的? 03/22 15:43
3F:→ PurpleCrow:列出一堆字串然後标出你想要的,可能比较容易表达清楚 03/23 11:51
※ 编辑: xvid 来自: 125.228.175.254 (03/23 13:32)
4F:→ mars90226:我的意思是,在你用RE比对的地方改成不符合的就执行 03/25 11:02
5F:→ mars90226:不过如果你没办法改程式的原始码的话,这招就不行了 03/25 11:02
6F:→ xvid:改原始码的确也是种方法啦... 03/25 13:09