2016-08-25 37 views
-2

我想過濾來自其內容是String我訪問一個文件中的一些內容:地帶的一部分[JAVA]

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(); 但我無法創建正確的regex,它匹配'+/-'開始並正確關閉它的「}」括號。

請幫助我解決這個問題。

[編輯]:正則表達式爲Java String

+0

是的空格可能會有所不同 –

+0

我可以在文本編輯器中使用正則表達式\ + \/\ - [\ s \ S] +?// [\ s \ S] +?(^ \};) 但不是在java中使用字符串「\\ + \\/\\ - [\\ s \\ S] +?// [\\ s \\ S] +?(^ \\};)」 –

+0

@ all向下選民我是新來的stackoverflow我不是一個球員在這裏.. 將嘗試從現在起詳細闡述。 –

回答

0

我能夠通過正則表達式來實現這一目標:

(?m)\\+\\/\\-[\\s\\S]+?//[\\s\\S]+?(^\\};\\s+$) 

爲Java字符串。或

\+\/\-[\s\S]+?//[\s\S]+?(^\};\s+$) 

as python regex。

這裏,Pattern.MULTILINE或(?m)告訴Java接受錨點^和$以匹配每行的開始和結尾(否則它們只匹配整個字符串的開始/結尾)。 Ref:https://stackoverflow.com/a/3652392/5580576

參見: Demo on regex101.com !!

0

可能能夠相處:

^\s* 
subblock 
[\s\S]+? 
^\s*\};$ 

a demo on regex101.com
注意:您必須雙擊Java中的反斜槓。

+0

Thanx .. @Jan這幫了我... –

+0

@ApoorvJain:你可能會接受和/或upvote答案(左邊的綠色勾號)。 – Jan