2

我想要一个匹配括号和其他文本之间的 ' ' 字符的正则表达式:

[Hello World]
      ^

我已经做到了这一点:

\[.* .*\]

但不幸的是,这也符合这一点:

[HelloWorld] [HelloWorld]
            ^

有没有办法排除这种情况?

4

5 回答 5

3

不要使用任意数量的通配符 ( .) 字符,而是使用任意数量的非括号字符:

\[[^\]\[]* [^\]\[]*\]

这最初看起来很不清楚,但它分解如下:

\[            first bracket
[^            exclusion class:
    \]\[          exclude brackets
]*            end exclusion; any amount
              space
[^            exclusion class:
    \]\[          exclude brackets
]*            end exclusion; any amount
\]            final bracket
于 2013-05-06T16:28:51.050 回答
1

尝试这样的事情:

\[([^\]*)\] \[([^\]*)\]
于 2013-05-06T16:28:24.827 回答
0

你可以用这个

\[[^[]]* [^[]]*\]
于 2013-05-06T16:31:26.073 回答
0

使用单词边界怎么样?

\[.*\b \b.*\]
于 2013-05-06T16:29:35.527 回答
0

您可以使用它(在查找模式的末尾有一个空格):

find: (\[.*?) 
replace: \1

(在记事本++ 6.3.2 上测试)

于 2013-05-06T16:54:33.030 回答