2017-09-06 63 views
3

是否可以檢查文本是否與正則表達式的一部分完全匹配?檢查整個文本是否與正則表達式的一部分匹配?

我想要匹配作爲(可能)匹配文本前綴的文本。

因此,舉例來說,我有一個正則表達式如下:

/etc/tomcat/conf/.* 

我想所有文件匹配目錄/etc/tomcat/conf/。我可以通過匹配完整的文件名與我的正則表達式來實現。但我需要先輸入該目錄,因此我想檢查是否需要在第一行輸入/etc/etc/tomcat

在一般情況下可以實現嗎?正則表達式匹配的文件將來自外部系統,因此有可能我會得到在形式的正則表達式:

/et..tomcat/con.* 

如果我理解正確的正則表達式的機器,它應該是可能的,因爲/et..tomcat/將安劍錚,卓傑/etc/tomcat/匹配,但這場比賽將是負面的,因爲文本將在那一刻和部分con.*不會得到滿足。我只需要訪問內部信息,文本已被完全使用,但正則表達式不...

Java是否提供了檢查方法?

+0

查看Matcher的文檔:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html。 'hitEnd()'方法可能是你正在尋找的。 –

+0

@VadimLanda謝謝,我做了一個快速測試,這正是我需要的 –

+0

@LucasTrzesniewski是的,這個問題的答案正是我需要的。棘手的部分是,我沒有尋找'部分映射',因爲我認爲它只是整個正則表達式匹配文本的一部分,而不是相反。 –

回答

0

只有一個overcomplex正則表達式。由於這個想法是去一個子目錄,一個可以這樣做:

Path full = Paths.get("/etc/tomcat/conf"); 

assert okay(full, Paths.get("/etc")); // -1- 
assert !okay(full, Paths.get("/and/so/on")); // -2- 

boolean okay(Path full, Path input) { 
    try { 
     input.relativize(full); // -1- "tomcat/conf" 
     return true; 
    } catch (IllegalArgumentException e) { 
     return false; // -2- 
    } 
} 

雖然無一例外更多的代碼可能是值得的。

相關問題