Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式查找和替换不在()之间的文本_Regex_Replace_Find_Sublimetext3 - Fatal编程技术网

Regex 正则表达式查找和替换不在()之间的文本

Regex 正则表达式查找和替换不在()之间的文本,regex,replace,find,sublimetext3,Regex,Replace,Find,Sublimetext3,我有一个升华文本的文本文件,看起来像这样 line 1 line 2 line 3 (line 4) hello (line6) line 5 line 5 line 6 (line 6) 我想删除所有不在括号内的文本:(),同时保留括号内的内容 我写了这个正则表达式,但它选择括号内的所有内容,而不是括号外的所有内容 \([^)]*\) 有人知道解决这个问题的正确正则表达式吗 谢谢 更新:正则表达式不会匹配同一行上的第二次出现。匹配: 不情愿地从开始到括号或结尾 勉强地夹在括号中 贪婪地从

我有一个升华文本的文本文件,看起来像这样

line 1
line 2
line 3
(line 4) hello (line6)
line 5 line 5
line 6 (line 6)
我想删除所有不在括号内的文本:(),同时保留括号内的内容

我写了这个正则表达式,但它选择括号内的所有内容,而不是括号外的所有内容

\([^)]*\)
有人知道解决这个问题的正确正则表达式吗

谢谢

更新:正则表达式不会匹配同一行上的第二次出现。

匹配:

  • 不情愿地从开始到括号或结尾
  • 勉强地夹在括号中
  • 贪婪地从头到尾
正则表达式:

^.*?(\(|$)|\).*?\(|\).*
请参见(包括一条包含3个括号内术语的额外采样线)

替换为空白

如果要在此操作后删除空行,请将
^\n
替换为空白。

您可以使用

查找内容:
[^()]*\([^()]*)\)[^()]*

替换为:
$1\n

请参阅和:

详细信息

  • [^()]*
    -0个或更多字符,而不是
  • \(
    -a
    字符
  • ([^()]*)
    -第1组(
    $1
    ):除
    之外的零个或多个字符
  • \)
    -a
    字符
  • [^()]*
    -0个或更多字符,而不是
升华文本演示:

一行括号内是否可以有多个字符串?例如
第6行(第6行)第7行(第7行)第8行
。如果是,预期的输出是什么?似乎效果很好,但是我在同一行上有多个括号的问题,因此。例如,它只匹配第一个括号集,而不匹配第二个括号集。请查看更新主页。@user2883306我增强了正则表达式,以便在一行中处理任意数量的括号文本-se新的演示。