我有逗号分隔的正则表达式的列表:
.{8},[0-9],[^0-9A-Za-z ],[A-Z],[a-z]
我已经做了逗号分割。 现在,我试图来匹配生成的密码,这个正则表达式。 问题是, Pattern.compile
不喜欢是没有逃过方括号。 一些可以给我一个简单的函数,接受一个字符串,像这样: [0-9]
并返回转义字符串\[0-9\]
我有逗号分隔的正则表达式的列表:
.{8},[0-9],[^0-9A-Za-z ],[A-Z],[a-z]
我已经做了逗号分割。 现在,我试图来匹配生成的密码,这个正则表达式。 问题是, Pattern.compile
不喜欢是没有逃过方括号。 一些可以给我一个简单的函数,接受一个字符串,像这样: [0-9]
并返回转义字符串\[0-9\]
您可以使用Pattern.quote(String)
。
从文档:
public static String quote(String s)
返回文本模式
String
指定的String
。这种方法产生了可用于创建一个模式就好像它是一个文字图案,将匹配字符串s的字符串。
在输入序列中的元字符或转义序列将给予没有特殊含义。
出于某种原因,上面的回答并没有为我工作。 对于那些像我这样谁过来后,这里是我发现了什么。
我期待一个反斜杠逃脱支架,但是,你必须使用两个,如果你有存储在一个字符串的模式。 第一个反斜杠转义第二个到字符串,这样,所看到的正则表达式是\]
因为regex只是看到一个反斜杠,它使用它来逃脱方括号。
\\]
在正则表达式,将匹配单个闭合方括号。
如果你想,虽然与后面,例如,你只使用单反斜线。 您正在使用的字符串转义模式中插入一个换行符到字符串。 正则表达式没有看到\n
-它看到换行符,并匹配。 你需要两个反斜杠,因为它不是一个字符串转义序列,这是一个正则表达式转义序列。
您可以使用\ Q和。\ E特殊字符...任何\ Q之间和\ E被自动转义。
\Q[0-9]\E
Pattern.compile()
喜欢方括号就好了。 如果你把字符串
".{8},[0-9],[^0-9A-Za-z ],[A-Z],[a-z]"
并把它分解的逗号,你结束了五个完全有效的正则表达式:第一个匹配的八个非行分隔符,第二相匹配的ASCII数字,等等。 除非你真的想匹配字符串一样".{8}"
和"[0-9]"
,我不明白你为什么会需要转义任何东西。