我一直在尝试并没有运气地阅读许多类似的答案。 我需要在括号内的文本中删除括号,以保留文本。理想情况下使用1个正则表达式...或2个?
我的文字是:
Alpha(Bravo(Charlie))
我想要实现:
Alpha(Bravo Charlie)
到目前为止,我得到的最好成绩是:
\\(|\\)
但它得到了:
Alpha Bravo Charlie
答案 0 :(得分:3)
您可以使用这样的正则表达式:
(\(.*?)\((.*?)\)
使用此替换字符串:
$1$2
更新:根据ııı条评论,由于我不知道您的完整示例文本,因此如果出现这种情况,我会提供此正则表达式
(\([^)]*)\((.*?)\)
答案 1 :(得分:1)
在您的帖子和评论中,您似乎只想删除最里面的括号,可以在其后使用以下正则表达式
\(([^()]*)\)
并根据您的语言替换为$1
或\1
。
在此正则表达式中,\(
匹配起始括号,\)
匹配结束括号,([^()]*)
确保捕获的文本不包含(
或{{1} }确保它是最里面的括号,并将捕获的文本放置在group1中,然后将整个匹配项替换为在group1文本中捕获的内容,从而摆脱了最里面的括号并将文本原样保留在里面。
答案 2 :(得分:1)
您的模式\(|\)
使用交替字符,然后将匹配左括号或右括号。
如果根据注释,只有一对嵌套括号,则可以匹配:
(\([^()]*)\(([^()]*\)[^()]*)\)
(
开始捕获群组\(
比赛开头括号
[^()]*
匹配0+次,而不是(
或)
)
关闭第1组\(
匹配(
捕获组2
\([^()]*\)
从(
到)
的匹配[^()]*
匹配0+次,而不是(
或)
)
关闭捕获组\)
匹配右括号并替换为第一个和第二个捕获组。