匹配两个字符之间的字符串(如果存在)

时间:2019-06-21 07:48:53

标签: regex

我需要一个表达式来在动态路径字符串中查找名称。 基本上,我需要在最后一个 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",这是错误的。

1 个答案:

答案 0 :(得分:1)

您可以使用

[^>]+(?=>[^>]*$)

请参见regex demo。对于您拥有的两个测试用例,它都匹配Category 1.1文本。

详细信息

  • [^>]+-除>以外的1个以上的字符
  • (?=>[^>]*$)-正向先行,需要>,然后是>以外的0+个字符,直到字符串末尾。

请注意,您之后可能希望使用环境提供的适当方法来trim() / strip()