首页 > 解决方案 > 如何在java中提取前两个字符和后两个字符之间的字符串?

问题描述

编辑:我想提取开头和结尾两个特殊字符之间的字符串。

输入可以是以下之一:
{[TestString]} {TestString} [TestString] [TestString]} {[TestString

预期输出:TestString

这里的特殊字符{, [, ],}是可选的。输入字符串的开头和结尾可以有/没有这些特殊字符。

在下面使用这个正则表达式Pattern.compile(),我没有得到预期的结果。

(?=\[|\{)(.*?)(?=\]|\})

标签: javaregex

解决方案


您在应该使用lookbehind 的地方使用了lookahead 断言。字符类确保其中之一[{]}将匹配:

(?<=[{\[])(.*?)(?=[]}])

这将返回TestString

在 regex101.com 上进行实时测试。请注意,如果要使用 Java 字符串构建正则表达式,则需要将反斜杠加倍(检查 Regex101 的代码生成器功能)。


推荐阅读