我不知道是否重复,但是我找不到相同的(也许我找不到,因为它有硬标题)
所以,我有一个字符串:
string a = "(Hello(World),World(Hello))";
我需要卸下第一个支架和最后一个支架。 并获得输出:
Hello(World),World(Hello)
我不需要删除第一个字符和最后一个字符。 我需要删除第一个特定字符(括号)和最后一个特定字符(右括号)。
也就是说,如果字符串是:
string a = "gyfw(Hello(World),World(Hello))";
输出为: gyfw Hello(World),World(Hello)
答案 0 :(得分:1)
要删除第一个特定字符:
a = a.Remove(a.IndexOf("("), 1);
要删除最后一个特定字符:
a = a.Remove(a.LastIndexOf(")"), 1);
答案 1 :(得分:0)
答案 2 :(得分:0)
以一种平衡的方式,可以使用此正则表达式
找到@"\(((?>[^()]+|\((?<Depth>)|\)(?<-Depth>))*(?(Depth)(?!)))\)"
替换@"$1"
如果需要具有内部括号,请将*
更改为+
。
如果要求只匹配一次并跨越字符串,则将^
和$
分别添加到正则表达式的开头/结尾。
这是正则表达式解释
\( # Match ( a open parenth
( # (1 start), Capture the core, to be written back
(?> # Then either match (possessively):
[^()]+ # Any character except parenths
| # or
\( # Open ( increase the paren counter
(?<Depth> )
| # or
\) # Close ) decrease the paren counter
(?<-Depth> )
)* # Repeat as needed.
(?(Depth) # Assert that the paren counter is at zero.
(?!)
)
) # (1 end)
\) # Match ) a closing parenth