在字符串中找到一个点?

时间:2017-05-25 11:10:22

标签: java regex

如何找到一个字符串以.开头,或者.是否包含前一个/

所以./.

我试过了:

^[^\.].*$

但这无法抓住以/

开头的任何内容

5 个答案:

答案 0 :(得分:1)

怎么样:

^/?\\..*$

这匹配一个字符串开头的可选斜杠和一个点。

根据评论,我想你想匹配:

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

这匹配一个由点组成的可选斜杠,然后在字符串的末尾匹配一个或多个不是斜杠或点的字符。

答案 1 :(得分:0)

^\.^[.]将匹配一个前导点。 ^[/][.]也会匹配起始/.

答案 2 :(得分: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-path/.some-file
  完全匹配:/path/path/.file
  完全匹配:/path/.file
  完全匹配:/asfas/.d
  完全匹配:/path/.file

<强> Run this java code in rextester.com

答案 3 :(得分:0)

你可以尝试这个^[\/|\.].?,但最好发布你想要找到的样本和样本。

修改

这应该^[\/|\.]+

答案 4 :(得分: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(".");