2013-03-22 56 views
0

我一整天都在这一块上撞着我的头。我有一个从运行shell命令捕获的字符串,我需要解析该字符串并提取文件的路径。我有什么工作好,直到我试图复制该文件...我认为我正在使用的正则表达式在路径的前面留下一个空白字符,这会导致以后各种麻烦。带ANT的额外空格propertyregex

这里的输入字符串的一个示例: [回波] P4ant具有输出= // Perforce的/ DIR1/DIR2/DIR3/dir4/dir5/DIR6/dir7 /p4ant/p4ant-2010.1.293250.jar#1 - C:\ DIR1 \ DIR2 \ DIR3 \ dir4 \ dir5 \ DIR6 \ dir7 \ dir8 \ dir9 \ p4ant \ p4ant-2010.1.293250.jar

当我分析它,我得到这个: [回音] P4ant本地路径= C:\ DIR1 \ DIR2 \ DIR3 \ dir4 \ dir5 \ DIR6 \ dir7 \ dir8 \ dir9 \ p4ant \ p4ant-2010.1.293250.jar

这看起来不错,但有一个额外的空间存在。我似乎无法摆脱它。 下面是我使用的代码:

  <propertyregex property="p4ant.local.path" 
        input="${p4ant.have.output}" 
        regexp="([^-][^ ]+?)$" 
        select="\0" 
        casesensitive="false" 
      /> 

我在寻找的“仪表板空间”的组合,并且不包括在输出中纵横驰骋,但仍然包括出于某种原因的空间。

我在这里做错了什么? 谢谢!

回答

1
\-\s <-- dash, followed by a whitespace 
(.+?) <-- Anything, up to the next matching character 
\s <-- whitespace 
(.+)$ <-- Anything, up to the end 

所以:
regexp="\-\s(.+?)\s(.+)$"

然后串联$ 1和$ 2(对不起,不知道这是如何工作的ANT)