我有这种类型的子串
string 1
{
string 2
string 3
{
string 4
string 5
}
string 6
{
string 7
string 8
}
string 9
{
string 10
string 11
string 12
{
string 13
string 14
}
string 15
}
}
string 16
string 17
所以基本上我有java类结构
现在我想要一段代码可以让我跟踪子串(SS#)
SS1:
string 4
string 5
SS2:
string 7
string 8
SS3:
string 13
string 14
SS4:
string 16
string 17
SS5:
string 10
string 11
string 12
{
string 13
string 14
}
string 15
SS6:
string 2
string 3
{
string 4
string 5
}
string 6
{
string 7
string 8
}
string 9
{
string 10
string 11
string 12
{
string 13
string 14
}
string 15
}
所以基本上我想要一段代码,可以将字符串(java类)的各种部分(函数,类,但不是任何循环)转换为不同的子字符串...
我读了这篇
Regex to get string between curly braces "{I want what's between the curly braces}"
但它只能在一对'{'和'}'之间获取数据,而不计算在第一个之后的'{'。
我不是完整的代码,而是如何进行的一些方向???
答案 0 :(得分:2)
虽然使用RegEx并不完美,但最好使用stack。
但它只需要一个RegEx解决方案,然后它可能会起作用(并非总是如此):
(?is)\{[^}]*?\}(?=.*?\})
<强>解释强>
<!--
(?is)\{[^}]*?\}(?=.*?\})
Match the remainder of the regex with the options: case insensitive (i); dot matches newline (s) «(?is)»
Match the character “{” literally «\{»
Match any character that is NOT a “}” «[^}]*?»
Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Match the character “}” literally «\}»
Assert that the regex below can be matched, starting at this position (positive lookahead) «(?=.*?\})»
Match any single character «.*?»
Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Match the character “}” literally «\}»
-->
答案 1 :(得分:0)
我不知道这是一个正则表达式,但我可以建议另一个解决方案: 我只是在编写sudo代码:
SS#
答案 2 :(得分:0)
使用正则表达式执行此操作非常困难。我建议您通过新行和一些简单的规则来拆分这个结构,以创建HashMap的数据结构。字符串2将是键,但它没有任何值。 String3将是下一个键,它的值将是下面的花括号中的东西,从以{开头的行开头,以以}开头的行开头。
答案 3 :(得分:-1)
尝试使用此正则表达式匹配{string}
,
\{(.*)\}