Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于验证URL段最后部分的第一个字母的正则表达式_Java_Regex_Url - Fatal编程技术网

Java 用于验证URL段最后部分的第一个字母的正则表达式

Java 用于验证URL段最后部分的第一个字母的正则表达式,java,regex,url,Java,Regex,Url,听起来是个很神秘的问题 我正在尝试编写一个快速正则表达式(将用Java进行计算),它将验证URL的最后一部分是否以某个字母开头 e、 我想验证URL的最后一部分是否以“p”开头。 i、 e.找到上一次出现的和,然后检查下一个字母是否为“P” 应验证这一点: www.mydomain.com/browse/P123 or www.mydomain.com/browse/P987W?id=1 但与此不符: www.mydomain.com/Product/C123 (对于使用正则表达式进行验证的

听起来是个很神秘的问题

我正在尝试编写一个快速正则表达式(将用Java进行计算),它将验证URL的最后一部分是否以某个字母开头

e、 我想验证URL的最后一部分是否以“p”开头。 i、 e.找到上一次出现的和,然后检查下一个字母是否为“P”

应验证这一点:

www.mydomain.com/browse/P123
or www.mydomain.com/browse/P987W?id=1
但与此不符:

www.mydomain.com/Product/C123

(对于使用正则表达式进行验证的系统,我无法对其进行编码!)

这在正则表达式中肯定是不可能的。删除最后一段(例如,
String lastSegment=url.substring(url.lastIndexOf(“/”);
然后可以使用正则表达式检查它的第一个字母。

对于没有查询字符串的情况,可以使用正则表达式:

".*/P[^/]*$"
这意味着“确保字符串中的最后一个斜杠后面紧跟着大写字母p。(不需要前导的
*
,但允许您使用
模式。匹配
而不是
模式。查找

要使其也处理查询字符串,请执行以下操作:

".*/P[^/?]*(\?.*)?$"

这当然是可能的;请看另一个答案。是的,重新思考这个问题,没错。但是使用lastIndexOf()会更快,除了问题说他没有任何选择使用其他代码-一个使用正则表达式进行验证的系统,因此我无法对其进行编码!(如果查询字符串中包含/,您的解决方案也会中断)。如果查询字符串包含斜杠,这将不起作用。啊,很好。(同样的事情也适用于#片段,但很容易添加。)实际上,刚刚测试了它(在Ruby中,但仍应适用),但它不起作用。第一个
*
需要是
[^?#]*
谢谢!感谢!