2017-05-25 86 views
-4

如何查找字符串是以.開頭還是.(前面的/)。找到一個字符串中的點?

所以./.

我已經試過:

^[^\.].*$ 

但這未能捕捉到任何開始用/

+0

你有什麼試過?什麼是您遇到問題的精確*代碼?你有什麼困難?你有錯誤信息嗎?如果是,哪一個?觀察到的行爲是否與預期行爲不同?如果是,那麼觀察到的行爲是什麼,它與預期的行爲有什麼不同? –

+0

我有我的問題試圖在我的問題 – panthro

+0

請粘貼您的Java代碼,所以我們可以測試它。 – stomtech

回答

0

^\.^[.]將匹配一個前導點。也^[/][.]將匹配起始/.

+0

^[/] [。]似乎不起作用。 – panthro

+0

你想用什麼語言?它在bash中工作 –

+0

java please – panthro

0

^[\/\.].*$將檢查字符串是否以開頭。/

這裏是Java代碼:

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

class RegexTester 
{ 
    final static String regex = "^[\\/\\.].*$"; 
    final static String[] stringsToTest = { ".file", 
              "./file", 
              "/file", 
              "/.file", 
              ".", 
              "./", 
              "/some/path", 
              "/some-path/.some-file", 
              "/path/path/.file", 
              "/path/.file", 
              "/asfas/.d", 
              "/path/.file" }; 

    final static Pattern pattern = Pattern.compile(regex); 

    public static void main(String[] args) 
    { 
     for (String text : stringsToTest) { 
      testRegex(text); 
     }  
    } 

    public static void testRegex(String testString) 
    { 
     Matcher matcher = pattern.matcher(testString); 

     while (matcher.find()) 
     { 
      System.out.println("Full match: " + matcher.group(0)); 

      for (int i = 1; i <= matcher.groupCount(); i++) 
      { 
       System.out.println("Group " + i + ": " + matcher.group(i)); 
      } 
     } 
    } 
} 

輸出是:

javac RegexTester.java && java RegexTester 

全場比賽:.file
全場比賽:./file
全場比賽:/文件
完全匹配:/.file
完全匹配:。
全場比賽:./
全場比賽:/一些/路徑
全場比賽:/some-path/.some-file
全場比賽:/path/path/.file
全場比賽:/路徑/ .file
全場比賽:/asfas/.d
全場比賽:/path/.file

Run this java code in rextester.com

+0

似乎並不適用於/ some /路徑 – panthro

+0

@panthro:它適用於[regex101.com](https://regex101.com/r/4myqSI/1)和[regexr.com](http:// regexr的.com/3g1ir)。 – stomtech

1

如何ABO ut:

^/?\\..*$ 

這匹配一個可選的斜線和一個字符串開頭的點。

根據評論,我想你想匹配:

/?\\.[^/.]+$ 

這一個點fllowed然後1個或多個字符未在字符串的結尾斜線或點,一個可選的斜線相匹配。

+0

無法使用.test – panthro

+0

無法使用/some-path/.some-file – panthro

+0

感謝您瀏覽了您的編輯,仍然無法運行/some-path/.some-file – panthro

0

你可以試試這個^[\/|\.].?但是最好是發佈一個你正在試圖找到的東西和地點的樣本。

編輯

這應該這樣做^[\/|\.]+

+0

無法正常工作.. – panthro

+0

粘貼正在查找的文本樣本。 它在此工作:https://regex101.com/ –

+0

.file或/.file或/path/.file – panthro

0

對於這個問題,你已經張貼:無需正則表達式。

String s = ...; 
s.startsWith(".") || s.startsWith("/.") 

如果你想正則表達式,因爲它很酷,使用這個

String s = ...; 
boolean matches = s.matches("/?\\..*"); 

(根據您的意見),如果你想查詢像最後一段中的路徑

String s = ...; 
boolean matches = s.matches("(.*/)?\\..*"); // matches also path/to/.file 

如果你的文件名實際匹配,你應該更喜歡Path

Path path = Paths.get("/path/to/.file"); 
boolean isHidden = path.getFileName().toString().startsWith("."); 
+0

@panthro PHP相關問題已關閉? – steffen

相關問題