2015-05-11 3 views
1

В моем SQL Server есть функция PATINDEX. Например:Java regex найти первый символ NOT в диапазоне символов

patindex('%[^A-Z,^a-z,^0-9,^\,^_]%', SqlInstanceName) 

Это возвращает позицию string индекс первого символа, который не в AZ, НЕ в аз, а не в 0-9, НЕ = '\' (обратный слэш) и NOT = '_' (нижнее подчеркивание).

Я хочу сделать то же самое в Java 1.6/1.7 с помощью Regex или с помощью любых встроенных методов библиотеки Java.

+1

Удалите «,» у вас там. '[^ A-Za-z0-9_]' – Maroun

ответ

3

В Java вы можете сделать:

Pattern p = Pattern.compile("[^\\w\\\\]"); 
Matcher m = p.matcher(input); // input is your String 

if (m.find()) 
    System.out.println(m.start()); // start position of your match 
+1

'\ w' соответствует любому символу слова' [a-zA-Z0-9_] ', +1. – Maroun

+0

@AcidRider: Это работало для вас? – anubhava

0

спасибо всем! Используя выше советы, я написал Java-код, и это, кажется, работает для меня:

// start code fragment 
Pattern pattern = Pattern.compile("([a-zA-Z0-9_\\\\]*)"); 
Matcher matcher = pattern.matcher(inputString); 
if (matcher.find()) 
{ 
    inputString = matcher.group(1); 
} 
// end code fragment 

Очень высокую оценку!

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