我怎样才能创建一个字符串的正则表达式像这样:如何使用正则表达式处理像这样的字符串?
<SERVER> <SERVERKEY> <COMMAND> <FOLDERPATH> <RETENTION> <TRANSFERMODE> <OUTPUTPATH> <LOGTO> <OPTIONAL-MAXSIZE> <OPTIONAL-OFFSET>
大多数领域都只是简单的话,但他们中的一些可能的路径,如FOLDERPATH,OUTPUTPATH,这些路径也可以带有文件名和通配符的路径。
保留是一个数字,传输模式可以是bin或ascii。问题是,LOGTO可能是日志文件名称追加的路径,也可能是NO,这意味着没有日志文件。
主要问题是可选参数,它们都是数字,如果没有MAXSIZE,则OFFSET不能存在,但MAXSIZE可以不带偏移地存在。
下面有一些例子:
loveserver love copy /muffin* 20 bin C:\Puppies\ NO 256 300
loveserver love copy /muffin* 20 bin C:\Puppies\ NO 256
loveserver love copy /hats* 300 ascii C:\Puppies\no\ C:\log\love.log 256
现在的主要问题是,路径可以有空格他们,所以如果我使用。为了匹配所有内容,当解析LOG目标最终连接到输出路径的可选参数时,正则表达式最终破坏。
另外,如果我最终使用。并开始删除它的一部分,正则表达式将开始把东西放在它不应该的地方。
继承人我的正则表达式:
^(\s+)?(?P<SRCHOST>.+)(\s+)(?P<SRCKEY>.+)(\s+)(?P<COMMAND>COPY)(\s+)(?P<SRCDIR>.+)(\s+)(?P<RETENTION>\d+)(\s+)(?P<TRANSFER_MODE>BIN|ASC|BINARY|ASCII)(\s+)(?P<DSTDIR>.+)(\s+)(?P<LOGFILE>.+)(\s+)?(?P<SIZE>\d+)?(\s+)?(?P<OFFSET>\d+)?$
太棒了。非常感谢你。 – UberJumper 2008-11-05 18:23:51