Java 使用正则表达式匹配字符串?
我正在使用JSP和Servlet,用户将在JSP页面中从该表单输入一些字符串 那根绳子可以是这样的-Java 使用正则表达式匹配字符串?,java,regex,string,Java,Regex,String,我正在使用JSP和Servlet,用户将在JSP页面中从该表单输入一些字符串 那根绳子可以是这样的- /pp/dc/dc1/h1 ... /pp/dc/dc1/h100 or /pp/dc/dc2/h1 ... /pp/dc/dc2/h100 or /pp/dc/dc3/h1 ... /pp/dc/dc3/h100 这里的pp和dc根本不会改变。有时,它们可以传递dc1或dc2或dc3,它们总是传递这样一个字符串,该字符串以h开头,然后后跟一些数字,如h1或h2或h100 这意味着有时
/pp/dc/dc1/h1
...
/pp/dc/dc1/h100
or
/pp/dc/dc2/h1
...
/pp/dc/dc2/h100
or
/pp/dc/dc3/h1
...
/pp/dc/dc3/h100
这里的pp
和dc
根本不会改变。有时,它们可以传递dc1
或dc2
或dc3
,它们总是传递这样一个字符串,该字符串以h
开头,然后后跟一些数字,如h1
或h2
或h100
这意味着有时候字符串可以是这样的-
/pp/dc/dc1/h10
or
/pp/dc/dc3/h3
or
/pp/dc/dc2/h10
/pp/dc/dc2/h10/pro
所以我的问题是如何使用正则表达式检查这些类型的模式。如果在h10
之后有任何字符串,或者后面跟有h
的任何数字,如下所示-
/pp/dc/dc1/h10
or
/pp/dc/dc3/h3
or
/pp/dc/dc2/h10
/pp/dc/dc2/h10/pro
然后我将返回false,否则返回true,如果它与上面显示的模式相同
使用正则表达式可以做到这一点吗
String data = "/pp/dc/dc3/h1"
这个怎么样:
^/pp/dc/dc[123]/h[0-9]+$
工作正则表达式示例:
如果正则表达式不是一个严格的要求,我想您可以基于string.split(“/”)方法来做一些事情。然后,您可以根据自己的要求在一个简单的循环中适当地检查每个令牌。使用正则表达式“计数”并不容易,但它是可行的:
^ (?# match start of string)
/pp (?# match /pp literally)
/dc (?# match /dc literally)
/dc (?# match /dc literally)
[1-3] (?# match a number 1-3)
/h (?# match /h literally)
(?: (?# start non-capturing group)
[1-9] (?# match a number 1-9)
| (?# OR)
[1-9] (?# match a number 1-9)
[0-9] (?# match a number 0-9)
| (?# OR)
100 (?# match 100 literally)
) (?# end non-capturing group)
$ (?# match end of string)
这将匹配
/h1
-/h3
,和/d1
-/d100
使用此正则表达式可以实现:
^\/pp\/dc\/dc[123]\/h([1-9]{1,2}|100)$
你可以验证这是否是你想要的
编辑:我在regex101中添加了一个示例
请注意,此正则表达式不允许最后一个数字大于您指定的100。还要注意,在本例中,/没有转义,但我认为您必须根据语言使用它们
编辑:如果您想匹配您在评论中所说的字符串,可以使用
^\/pp\/dc\/dc[psl]\/h([1-9]{1,2}|100)$
您可以在或中看到这是可能的。你试过了吗?如果没有,你可以在www.regex101.com上玩。这很有帮助,而且你似乎很清楚自己想要什么,只是不知道怎么做。谢谢梅利奥特的帮助。在我的例子中,
dc1
、dc2
和dc3
是三个不同的字符串,它们不是后跟整数的dc。这只是一个例子,但我想其中有一些混乱。在我的例子中,dcp
作为一个字符串而不是dc1
,dcs
作为第二个字符串而不是dc2
,dcl
作为第三个字符串而不是dc3
。那么,有没有办法在正则表达式中包含这三个字符串呢?@user2809564,是的,当然,但首先,它总是p
,s
,还是l
?还是随便一封信?或者可能是任何字母数字字符?我在阅读了一些教程后就可以使用了。谢谢你的帮助。@user2809564-太好了!!:)谢谢你的帮助。在我的例子中,dc1
、dc2
和dc3
是三个不同的字符串,它们不是后跟整数的dc。这只是一个例子,但我想其中有一些混乱。在我的例子中,dcp
作为一个字符串而不是dc1
,dcs
作为第二个字符串而不是dc2
,dcl
作为第三个字符串而不是dc3
。那么有没有办法在正则表达式中包含这三个字符串?@user2809564我已经编辑了我的答案,以满足您的需要。