Java 尝试定义某些RegularExpression时出现无效的转义序列错误
我正在尝试定义一些正则表达式Java 尝试定义某些RegularExpression时出现无效的转义序列错误,java,android,regex,Java,Android,Regex,我正在尝试定义一些正则表达式 String passwordPattern="((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})"; String imageFileExtensionPattern="([^\s]+(\.(?i)(jpg|png|gif|bmp))$)"; String HTMLtagPattern="<("[^"]*"|'[^']*'|[^'">])*>"; String ExtractHTMLlinkPa
String passwordPattern="((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
String imageFileExtensionPattern="([^\s]+(\.(?i)(jpg|png|gif|bmp))$)";
String HTMLtagPattern="<("[^"]*"|'[^']*'|[^'">])*>";
String ExtractHTMLlinkPattern="\s*(?i)href\s*=\s*(\"([^"]*\")|'[^']*'|([^'">\s]+))";
由于Java将
\
视为字符串文本中的转义字符,因此需要在模式中转义它们,因此它们将被解释为正则表达式的一部分(而不是普通的转义字符):
String passwordPattern=“((?=.*\\d)(?=.[a-z])(?=.[a-z])(?=.[@#$%])。{6,20}”;
字符串imageFileExtensionPattern=“([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$”;
字符串HTMLtagPattern=“])*>”;
String ExtractHTMLlinkPattern=“\\s*(?i)href\\s*=\\s*(\”([^\“]*\”)”|“[^']*'|”([^'\“>\\s]+)”;
您需要避开反斜杠:即写\
而不是\
\
用于特殊字符的字符串文本:例如,\t
是一个选项卡。因此,如果你想要一个实际的反斜杠,你需要写代码> \\//> > /p> < p>如果java使用C++风格的字符串引用,需要双引号和转义符(或者是TrtraRMS,这可能是MS专用的)。p>
如果是这样,这些应该是新字符串。其中一个正则表达式已“转义”。最后一个正则表达式有一些
“
引号。
我使用RegexFormat对每个文件进行格式化以进行检查,然后将它们打包成C样式的字符串
passwordPattern="((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
imageFileExtensionPattern="([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)"
HTMLtagPattern="<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
ExtractHTMLlinkPattern="\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))";
emailPattern="(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|”(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*”)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";
(?:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+
(?: \. [a-z0-9!#$%&'*+/=?^_`{|}~-]+ )*
| ”
(?:
[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \\ [\x01-\x09\x0b\x0c\x0e-\x7f]
)*
”
)
@
(?:
(?:
[a-z0-9]
(?: [a-z0-9-]* [a-z0-9] )?
\.
)+
[a-z0-9]
(?: [a-z0-9-]* [a-z0-9] )?
| \[
(?:
(?:
25 [0-5]
| 2 [0-4] [0-9]
| [01]? [0-9] [0-9]?
)
\.
){3}
(?:
25 [0-5]
| 2 [0-4] [0-9]
| [01]? [0-9] [0-9]?
| [a-z0-9-]* [a-z0-9] :
(?:
[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \\ [\x01-\x09\x0b\x0c\x0e-\x7f]
)+
)
\]
)
passwordPattern=“((?=.*\\d)(?=.[a-z])(?=.[a-z])(?=.[@#$%])。{6,20}”;
imageFileExtensionPattern=“([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$”
HTMLtagPattern=“])*>”;
ExtractHTMLlinkPattern=“\\s*(?i)href\\s*=\\s*(\”([^\“]*\”)”[124;“[^']*'”[124;”([^'\“>\\ s]+)”;
(5)以下以下以下:(:(:(:(:(a-z0-10-10-10-10-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10)以下以下以下:(:(:(:(5)以下以下以下以下以下以下以下:(:(:(:(10)以下以下以下以下以下以下:(:(:(1-a-10 10-10 10-10 10 10 10-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10-5 5 5 5 5-10-10-10 10 10 10 10 10 10 10 10 10 10 10 10 10 10-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5)以及以及以及以及[a-z0-9-]*[a-z0-9])?\\\]+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\[(?:(?:(?:):25[0-5]| 2[0-4][0-9][01]?[0-9][0-9]?)\\\\\]{3}(?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?[a-z0-9-][a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)”;
(?:
[a-z0-9!#$%&'*+/=?^{124;}~-]
(?:\.[a-z0-9!#$%&'*+/=?^{{124;}~-]+)*
| ”
(?:
[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
|\\[\x01-\x09\x0b\x0c\x0e-\x7f]
)*
”
)
@
(?:
(?:
[a-z0-9]
(?:[a-z0-9-]*[a-z0-9])?
\.
)+
[a-z0-9]
(?:[a-z0-9-]*[a-z0-9])?
| \[
(?:
(?:
25 [0-5]
| 2 [0-4] [0-9]
| [01]? [0-9] [0-9]?
)
\.
){3}
(?:
25 [0-5]
| 2 [0-4] [0-9]
| [01]? [0-9] [0-9]?
|[a-z0-9-]*[a-z0-9]:
(?:
[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
|\\[\x01-\x09\x0b\x0c\x0e-\x7f]
)+
)
\]
)
谢谢,但是..HTMLtagPattern和ExtractHTMLlinkPattern@AndreaF;您需要在任何字符串中使用“\\”作为反斜杠。@AndreaF您还需要使用\”
来表示字符串中的双引号。查看我的更新答案。我只能接受答案,但也可以向上投票;)一个好的选择——我也投了更高的票——主要是因为它还提到了\“
String passwordPattern="((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
String imageFileExtensionPattern="([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)";
String HTMLtagPattern="<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
String ExtractHTMLlinkPattern="\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))";
passwordPattern="((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
imageFileExtensionPattern="([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)"
HTMLtagPattern="<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
ExtractHTMLlinkPattern="\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))";
emailPattern="(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|”(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*”)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";
(?:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+
(?: \. [a-z0-9!#$%&'*+/=?^_`{|}~-]+ )*
| ”
(?:
[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \\ [\x01-\x09\x0b\x0c\x0e-\x7f]
)*
”
)
@
(?:
(?:
[a-z0-9]
(?: [a-z0-9-]* [a-z0-9] )?
\.
)+
[a-z0-9]
(?: [a-z0-9-]* [a-z0-9] )?
| \[
(?:
(?:
25 [0-5]
| 2 [0-4] [0-9]
| [01]? [0-9] [0-9]?
)
\.
){3}
(?:
25 [0-5]
| 2 [0-4] [0-9]
| [01]? [0-9] [0-9]?
| [a-z0-9-]* [a-z0-9] :
(?:
[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \\ [\x01-\x09\x0b\x0c\x0e-\x7f]
)+
)
\]
)