2015-05-13 2 views
0

Мне нужно написать регулярное выражение, которое будет соответствовать строке значения «* .log» У меня есть следующий код, и он не работает должным образом.Как совместить строку с символом подстановки в java

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

выше оператор возвращает ложь, когда значение названия «* .log»

Любая помощь очень ценится.

+3

регулярное выражение является правильным, из того, что я могу прочитать из вашего вопроса, нет причин для повторного выражения. –

+0

Я просто запустил это, и он выдал true. Поэтому я не уверен, в чем проблема. – Mshnik

+0

Ваш код эквивалентен 'if (name.equals (" *. Log ")' .Он должен работать нормально. – Pshemo

ответ

0

Как просто:

\*\.log 

Вы всегда можете проверить здесь:

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

+0

да, вы правы. Fixed – Alex

+0

И теперь мы возвращаемся к регулярному выражению, которое OP уже использует, поскольку строка '' \\ * \\. log "' представляет '\ * \. log'. Если вы захотите, я временно удалю этот ответ и вернусь с новой информацией * после того, как * OP предоставит больше информации, которая позволит нам воспроизвести описанную проблему . На данный момент ваш ответ выглядит как комментарий «работает для меня» (http://meta.stackexchange.com/questions/118992/are-works-for-me-answers-valid). – Pshemo

0

Вы можете использовать этот код:

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

Почему вы делаете это? Не могли бы вы сделать

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

Мне кажется, как это было бы простой вариант, так как все, что может быть перед .log, так же, как если бы вы использовали уайлдкард.
Кроме того, если вы хотите убедиться, что это не просто «.log», это тоже очень просто.

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

Надеюсь, я немного помог!

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) 
Смежные вопросы