Re: [问题] 请问例外的写法

楼主: rkcity (喵。罐頭)   2012-08-01 16:48:17
※ 引述《PurpleCrow (紫乌鸦)》之铭言:
: ※ 引述《xvid ()》之铭言:
: : 语言: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
: conhost.exe
: dwm.exe
: logonui.exe
: service.exe
: spoolsv.exe
: svchost.exe
: taskhost.exe
: userinit.exe
: werfault.exe
: wininit.exe
: winlogon.exe
: notepad.exe
: mspaint.exe
: \w+(?<!notepad|mspaint)\.exe
: 会得到前11个
: 不知道是不是你说的意思
: 另
: 该软件只能exclude不能include吗?
: 可以的话就不用那么麻烦了 ^ ^;
借题询问一下各位前辈..
http://regexr.com?31mr3
- - - - - - - -
Context
- - - - - - - -
-size 512
-size 556
-size 512556
-size 556556
-size 768
-size 512768
-size 556768
- - - - - - - -
- - - - - - - -
RegExp
- - - - - - - -
-size (?!512|556)
- - - - - - - -
这样子可以抓出 768 前的 -size
可是如果我想要抓的是 不是512和556
也就是会包含512556 556556 512768 556768等虽是512 556开头
但整体数字不是512和556的话
应该要怎么改呢?
另外,如果我想要顺便抓出后面这个数值的话
(?!512|556)因为是不包含其结果 所以没办法用$1取得 >"<
感谢各位前辈 m(_ _)m

Links booklink

Contact Us: admin [ a t ] ucptt.com