VS2015或NP ++中的多行正则表达式

时间:2016-01-28 14:52:35

标签: regex visual-studio-2015 notepad++

我需要在多个文件中替换以下模式。

this\.dialogs = {.*};

当我在此处设置single line标志时,此方法正常: https://regex101.com/r/dF2yG3/2

但是我无法在VS或Notepad ++等编辑器中使用它,它只能匹配一行。
如何更改任何这些编辑器中的正则表达式或设置标志,以便我可以跨越多行?

2 个答案:

答案 0 :(得分:3)

请注意,您只想使用

(?s)this\.dialogs = \{.*\};

如果您想匹配从this.dialogs = { last }的字符串。

要仅匹配最接近的};,请使用

(?s)this\.dialogs = \{.*?\};

(?s)内联修饰符强制点匹配任何字符 inccuding 换行符。

enter image description here

在Notepad ++ 中,您可以在查找和替换中使用 .匹配记事本++ 选项中的换行符对话框而不是(?s)

enter image description here

在Visual Studio 2015 (以及在VS2012,VS2013中),您需要使用

this\.dialogs = {[\s\S\r]*?};

匹配从this.dialogs = {到最近的};

的字符串

enter image description here

答案 1 :(得分:0)

转动括号并激活. matches newline在记事本中:

this\.dialogs = \{.*\};

enter image description here

或者更好用 this\.dialogs = \{[^}]*\};