Java Regular Expression适用于在线测试,但不适用于实践

时间:2014-03-21 20:05:31

标签: java regex

我有一个正则表达式,当我在这样的网站上测试它时可以正常工作:http://java-regex-tester.appspot.com/。但是,在我的代码中,它不起作用。有什么建议吗?

目标文字: \ vdiarctest12 \ test \ 2014 \ Trad 2014Q1 \ Step 1 \ United_Traditional_v2306_03_18_2014_1340.pfd

陷入Java:

if (!arcvalFileFormBean.getTxtFileReview().matches("^([A-Za-z]):.*")) {
if (!arcvalFileFormBean.getTxtFileReview().matches("\\\\vdiarc.*[0-9]\\.*")) {
status = "MAPPING ERROR: Please submit a file from a mapped drive (i.e. K:\\).";
request.setAttribute(FairValConstants.status, status);
throw new InvalidFileMoveException(FairValConstants.MAKE_VALID_SELECTION);
} 
} 

我的代码检查bean 中的文本是否与正则表达式匹配。当我测试表达式时,它会找到所有内容,所以通过放置!在它之前,我会认为它会以我想要的方式工作。

建议? 谢谢!

修改

更改了我的代码,抱歉格式化。这是我的正则表达式的目的。我的用户正在提交文件,他们可以使用映射的驱动器或输入位置\\vdiarctest01\test\等。我正在检查他们是否提交了映射驱动器,如果没有检查他们是否输入了,如果不要抛出错误。否则继续。

2 个答案:

答案 0 :(得分:3)

这是错误:

\\\\vdiarc.*[0-9]\\.*
                   ^^

您可以在\\

之前删除.

或者您可以在.

之后添加\\.

所以它将是

\\\\vdiarc.*[0-9]\\..*

答案 1 :(得分:0)

尽量让它变得非贪婪:

"\\\\vdiarc.*?[0-9]\\..*"

Online Demo