1

我正在尝试做一个简单的正则表达式,在部分中搜索一些字符等,包括查找.文字。但是,Pattern编译器说它无效。

以下是引发格式异常的完整正则表达式的摘录。逃逸看起来是对的,它只是将.视为不应该逃逸的东西。

([a-zA-Z0-9_-\.\s]{1,})
              ^

我也试过"([a-zA-Z0-9_-\\\\.\\s]{1,})"(与​​上面相同,但有两个\逃脱.)没有运气。

我可以在互联网上找到的所有用于转义点字符的资源都表明这应该有效。

我错过了什么?

4

2 回答 2

5

问题不在于它,.而在于-它之前。尝试"([a-zA-Z0-9_\\-.\\s]{1,})"

-是字符类中的元字符[...]。它指定字符范围,例如[a-z]可以匹配Unicode 表中a和(包括)之间的字符。z如果您在不可能将其视为范围运算符的地方使用它,例如在字符类的开头或结尾,[-...] [...-]它将被视为普通字符,因此在这种情况下您不必转义它。否则,您将需要使用\before 将其更改为简单的文字。

于 2013-01-08T02:58:46.810 回答
2

在正则表达式中,破折号-和点.都被视为元字符。如果您需要查找.-除了字母数字,它应该是[a-zA-Z0-9[\.\-]]or [a-zA-Z0-9[\Q.-\E]]

于 2013-01-08T03:18:13.367 回答