我需要一个表达式来在动态路径字符串中查找名称。
基本上,我需要在最后一个 File uploadFile = new File("src/main/resources/static/images/icon/icon4.jpg");
FileInputStream is = new FileInputStream(uploadFile);
return new MockMultipartFile("icon4.jpg", "icon4.jpg", "image/jpeg", IOUtils.toByteArray(is));
字符之前找到一个字符串,并且该字符串必须在这些>
字符内。
可以说我有这个字符串:
>
使用该表达式"Category 1 > Category 1.1 > Category 1.1.1"
,它可以工作,并且我得到了所需的字符串,即\>(.*)\>
。
问题是,如果此字符串在开始时没有"Category 1.1"
。
例如
>
我尝试了类似"Category 1.1 > Category 1.1.1"
的方法,但这种方法仅适用于这种情况。当我用\>?(?=>)?\>?(.*)\>
测试时,它返回"Category 1 > Category 1.1 > Category 1.1.1"
,这是错误的。
答案 0 :(得分:1)
您可以使用
[^>]+(?=>[^>]*$)
请参见regex demo。对于您拥有的两个测试用例,它都匹配Category 1.1
文本。
详细信息
[^>]+
-除>
以外的1个以上的字符(?=>[^>]*$)
-正向先行,需要>
,然后是>
以外的0+个字符,直到字符串末尾。请注意,您之后可能希望使用环境提供的适当方法来trim()
/ strip()
。