使用正则表达式[JAVA]剥离多行字符串的一部分
我正在尝试从一个文件中筛选一些内容,该文件的内容可作为使用正则表达式[JAVA]剥离多行字符串的一部分,java,regex,string,Java,Regex,String,我正在尝试从一个文件中筛选一些内容,该文件的内容可作为Stringas进行访问: block "block1" { ADDSFDJF SDFSDFSDF SDFSDFSDF // subblock: subblock1 [master] include "/path/tofile/subblock1.conf"; +/- subblock subblock1 // subblock: subblock1 subblock "subblock1" { type TYPE; file "n
String
as进行访问:
block "block1"
{
ADDSFDJF
SDFSDFSDF
SDFSDFSDF
// subblock: subblock1 [master]
include "/path/tofile/subblock1.conf";
+/- subblock subblock1
// subblock: subblock1
subblock "subblock1"
{
type TYPE;
file "name.file";
details blah blah.
other {sdhsdf};
};
};
file "dddd.file";
details blah blah.
// subblock: subblock2
include "/path/tofile/subblock2.conf";
+/- subblock subblock2
// subblock: subblock2
subblock "subblock2"
{
type TYPE;
file "name.file";
details blah blah.
other {sdhsdf};
more fields
};
};
这里我想删除每个子块的一些行,即:我想删除这些行:
+/- subblock subblock1
// subblock: subblock1
subblock "subblock1"
{
type TYPE;
file "name.file";
details blah blah.
other {sdhsdf};
};
};
我正在尝试
content.replaceALL()代码>
但是我无法为start创建与'+/-'
匹配的适当regex
,并为其创建适当的结尾'}'括号
请帮我解决这个问题
[编辑]:正则表达式作为Java字符串您可能能够处理:
^\s*
subblock
[\s\S]+?
^\s*\};$
请参阅。
注意:您必须在Java
中对反斜杠进行双重转义,我可以通过regex实现这一点:
(?m)\\+\\/\\-[\\s\\S]+?//[\\s\\S]+?(^\\};\\s+$)
作为java字符串。或
\+\/\-[\s\S]+?//[\s\S]+?(^\};\s+$)
作为python正则表达式
这里,Pattern.MULTILINE or(?m)告诉Java接受锚定“^”和$以在每行的开始和结束处匹配(否则它们只在整个字符串的开始/结束处匹配)。
参考:
见:
!! 是的,在文本编辑器中使用regex\+\/\-[\s\s]+?//[\s]+?(^\};)可以使用空格,但在java中不能使用字符串“\\+\/\-[\\s\\s]+/[\\s\\s]+?(^\}”)”@所有的投票人我是stackoverflow的新手我不是这里的玩家。。从现在开始,我将尝试详细说明。@ApoorvJain:然后你可能会接受和/或投票表决答案(左边绿色勾号)。