Regex 用于跨多行选择文本的正则表达式

Regex 用于跨多行选择文本的正则表达式,regex,Regex,我正试图编写一个正则表达式来选择Java文件中两个大括号之间的文本。大括号之间的文本可以跨多行分布 例如 我需要选择大括号之间的所有线 我尝试了\{[.]*\},但它没有选择多行 请在这方面给我建议。 谢谢。您需要在正则表达式中添加换行符。。。试试这个: \{(.*\r\n)*\}您需要在正则表达式中添加换行符。。。试试这个: \{(.*\r\n)*\}通常,这不是一个好主意,因为需要考虑嵌套括号等。您最好改用解析器。 尽管如此,您可能会接受以下构造: ^\{ (.+?) ^\} 这假设您的开

我正试图编写一个正则表达式来选择Java文件中两个大括号之间的文本。大括号之间的文本可以跨多行分布

例如

我需要选择大括号之间的所有线

我尝试了
\{[.]*\}
,但它没有选择多行

请在这方面给我建议。
谢谢。

您需要在正则表达式中添加换行符。。。试试这个:
\{(.*\r\n)*\}

您需要在正则表达式中添加换行符。。。试试这个:
\{(.*\r\n)*\}

通常,这不是一个好主意,因为需要考虑嵌套括号等。您最好改用解析器。
尽管如此,您可能会接受以下构造:

^\{
(.+?)
^\}
这假设您的开始括号和结束括号独立于一行。如果还希望允许空白,则需要将其更改为:

^\s*\{
(.+?)
^\s*\}

请参见(请注意不同的修饰符,即
DOTALL
多行
!)。

通常,这不是一个好主意,因为您需要考虑嵌套括号等。您最好改用解析器。
尽管如此,您可能会接受以下构造:

^\{
(.+?)
^\}
这假设您的开始括号和结束括号独立于一行。如果还希望允许空白,则需要将其更改为:

^\s*\{
(.+?)
^\s*\}

请参见(请注意不同的修饰符,即
DOTALL
MULTILINE
!)。

您可以尝试此
{[^}]*}
您可以尝试此
{[^}]*}
简单地说:不。您需要在大多数正则表达式中转义括号,此外,这只适用于一行(除非指定了
DOTALL
)。是,括号需要转义。我已经把逃逸的角色,但我猜它被删除了。我已经编辑过了。要打印转义字符,我必须放置另一个转义字符。此外,即使在花括号之间有多行,它也可以工作。您可能需要相应地删除回车符(\r)。简单地说:否。您需要在大多数正则表达式风格中转义括号,此外,这只适用于一行(除非指定了
DOTALL
)。是的,需要转义括号。我已经把逃逸的角色,但我猜它被删除了。我已经编辑过了。要打印转义字符,我必须放置另一个转义字符。此外,即使在花括号之间有多行,它也可以工作。您可能需要相应地删除回车符(\r)。不幸的是,我无法在我的任何编辑器Atom、Eclipse、Vim:(我只能在regex101.com中看到它工作。似乎许多编辑器不支持或部分支持表达式标志。不幸的是,我无法在我的任何编辑器Atom、Eclipse、Vim中验证此特定正则表达式:(我只能在regex101.com中看到它工作。似乎许多编辑器不支持或部分支持表达式标志。