Java正则表达式查找不在字符范围内的第一个字符

Java正则表达式查找不在字符范围内的第一个字符,java,regex,Java,Regex,在我的SQL Server中有一个PATINDEX函数。例如: patindex('%[^A-Z,^a-z,^0-9,^\,^_]%', SqlInstanceName) 这将返回第一个字符的字符串索引位置,该字符不在A-Z、A-Z、0-9、NOT='\'(反斜杠)和NOT='\'(下划线) 我想在Java 1.6/1.7中使用Regex或任何内置Java库方法执行同样的操作。在Java中,您可以执行以下操作: Pattern p = Pattern.compile("[^\\w\\\\]")

在我的SQL Server中有一个
PATINDEX
函数。例如:

patindex('%[^A-Z,^a-z,^0-9,^\,^_]%', SqlInstanceName)
这将返回第一个字符的
字符串
索引位置,该字符不在A-Z、A-Z、0-9、NOT='\'(反斜杠)和NOT='\'(下划线)

我想在Java 1.6/1.7中使用Regex或任何内置Java库方法执行同样的操作。

在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
谢谢大家! 使用上述技巧,我编写了这段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

非常感谢

移除你在那里的“s”<代码>[^A-Za-z0-9.]
\w
匹配任何单词字符
[A-Za-z0-9.]
,+1。