我想跳过 URL 末尾包含任何 Office 文件格式或 pdf 的 URL,这是我的代码。
String Url ="http://chemistry.csudh.edu/faculty/jim/aromaticity.ppt";
if (!Url.matches(".*(doc|dot|docx|docm|dotx|dotm)")
|| !Url.matches(".*ppt|pot|pps")
|| !Url.matches(".*xls|xlt|xlm")
|| !Url.matches(".*pdf"))
System.out.print(Url);
else
System.out.print("true");
我想知道这个代码片段有什么问题,因为它每次都会打印 url,但我想跳过包含任何上述格式的 url。
最佳答案
您缺少第二个和第三个正则表达式中的括号。 !Url.matches(".*ppt|pot|pps")
将匹配所有不以 ppt
结尾的 URL,但类似于 abc 的 URL .pot
将不会与该正则表达式匹配,并且条件将为 true
。你应该将其更改为:
!Url.matches(".*(ppt|pot|pps)")
.. 如第一个正则表达式所示。另外,在您的情况下,应该是 &&
而不是 ||
。
顺便说一句,为什么有 4 个不同的 matches()
调用?这将必须编译 4 个不同的正则表达式,而您可以使用单个正则表达式来完成它。只需将所有扩展添加到第一个正则表达式列表中即可:
if (!url.matches(".*(doc|dot|docx|docm|dotx|dotm|ppt|pot|pps|xls|xlt|xlm|pdf)")
P.S:请遵循 Java 命名约定。变量名称应以小写字母开头。
关于java - java中的正则表达式代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271221/