2015-04-17 4 views
0

Я пытаюсь написать регулярное выражение, которое найдет все, кроме '.' - то есть строка, содержащая только '.', должна вернуть false и все остальное true.Java regex, чтобы найти все, кроме '.'

String regex = "(?!(^\\.$)).*"; 
String test = "."; 
Pattern pattern = Pattern.compile(regex); 
Matcher matcher = pattern.matcher(test); 
System.out.println(matcher.find()); 
+1

Что проблема? –

+0

Я не вижу ничего плохого в вашем коде. Можете ли вы точно указать, в чем проблема? – Unihedron

+0

Я думаю, что это сработает [^ \\. $]. * –

ответ

2
^(?![.]$).*$ 

Это должно сделать для you.You нужно использовать anchors, чтобы убедиться, что вы не делать какие-либо частичные совпадения.

+0

Это регулярное выражение практически совпадает с оригинальным. – Unihedron

+0

@Unihedro это не сделает парные матчи, которые регулярное выражение 'OP' сделает – vks

+2

@LuiggiMendoza, когда' .' находится внутри '[]' вам не нужно его избегать. – vks

1

ли вам действительно нужно регулярное выражение для этого, просто использовать сравнение строк:

if (!".".equals(test)) { 
    // not equal to a dot 
} 
+2

К сожалению, api, который мы используем, принимает только шаблон и использует matcher.find, чтобы найти – user3626708

+0

Можно ли использовать 'if (! Matcher.find())'? – anubhava

1

Я думаю, что это будет делать работу [^.].*|[.].+, я попытался 15 различных входов на http://www.regexplanet.com/advanced/java/index.html, и это только говорит ложь, пытаясь найти '.'

Объяснение:

[^.].* - сопрягать все, что начинается с не-точечного характера, и после этого имеет 0 или более любых других символов,

[.].+ - матч все, что начинается с точки, и следует по меньшей мере одним или несколькими другими персонажами.

[^.].*|[.].+ - обе части объединены с оператором «или»

+0

Вы протестировали его с помощью метода 'find'? Кроме того, какие вещи ваши тестовые примеры? Вы пытались сопоставить '$'? – Pshemo

+0

Да, но, к сожалению, я узнал, что для входов вроде «..» или «...» это регулярное выражение не срабатывает :( –

+0

Я отредактировал, я думаю, теперь это работает! –

Смежные вопросы