如何在java中匹配字符串和通配符

时间:2015-05-13 17:14:01

标签: java regex

我需要编写一个匹配值为“* .log”的字符串的正则表达式 我有以下代码,它似乎没有按预期工作。

if (name.matches("\\*\\.log")

当name的值为“* .log”

时,上述语句返回false

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:3)

你为什么这样做?你不能这样做

if(name.endsWith(".log"))

在我看来,这将是一个更简单的选项,因为任何事情都可以在.log之前,就像你使用通配符一样。
另外,如果你想确保它不仅仅是" .log",那也很简单。

if(name.endsWith(".log") && !name.equals(".log"))

希望我帮了一下!

答案 1 :(得分:1)

我认为这个正则表达式对你有帮助......

^\*\.log$

对于php,

$re = "/\\*\\.log/"; 
$str = "*.log"; 

preg_match($re, $str, $matches);

对于JavaScript,

var re = /\*\.log/; 
var str = '*.log';
var m;

if ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}

对于Python,

import re
p = re.compile(ur'\*\.log')
test_str = u"*.log"

re.search(p, test_str)

答案 2 :(得分:0)

简单如下:

\*\.log

您可以随时查看:

https://www.regex101.com/r/vK7mQ6/2

答案 3 :(得分:0)

您可以使用此代码:

String name="test.log";
if (name.matches("^.+\\.log$") ) {
    System.out.println("Okay");
}