2011-11-21 53 views
2

我有一個文本文件(f.txt),其內容應該是文件(.c文件和其他文件)的列表一個接一個地下面。螞蟻正則表達式(正則表達式元素)模式中的轉義字符是什麼

 

    first.c 
    temp.c 
    temp.txt 
    a.txt 
    second.c 
    third.c 

在這個文件中我想添加一些前綴和後綴只有.c文件。爲此我寫了下面的ant腳本。

 

    <replaceregexp byline="true" file="f.txt"> 
     <regexp pattern="(.+).c"/> 
     <substitution expression="PRE \1.c POST"/> 
    </replaceregexp> 

它不工作的字符串second.c

預計產量

 

    PRE first.c POST 
    PRE temp.c POST 
    temp.txt 
    a.txt 
    PRE second.c POST 
    PRE third.c POST 

實際產量

 

    PRE first.c POST 
    PRE temp.c POST 
    temp.txt 
    a.txt 
    PRE s.c POSTond 
    PRE third.c POST 

其治療.c任何字符.。但我保持它完全解析.c。我在.c之前使用\也嘗試了<regexp pattern="(.+)\.c">。但這也沒有幫助。

請給我一個解決方案來獲得預期的輸出。

注:我使用螞蟻1.7.0在Windows XP

回答

4

你想逃離.,可能使用某種類型的錨,如:

<regexp pattern="^(.+)\.c$"/> 

^$意義的開始和行結束。沒有他們像foo.coo.txt行會匹配。

+0

+1這是正確的答案。 – FailedDev

+2

+1。是的,錨和反斜槓應該一直存在,但在我看來它仍然應該在'second.c'上正常工作。我錯過了什麼? –

+1

@AlanMoore,好點。我不知道螞蟻,所以只能推測一些非貪婪量詞設置是積極的。 – Qtax

0

我覺得你有逃跑兩次,如:

<regexp pattern="(.+)\\.c"> 
+3

不,這是一個XML屬性值,不是Java字符串文字。 –

相關問題