2014-10-27 61 views
0

我想在任何使用sed的Java方法上添加throws java.lang.Exception正則表達式在Java的某個位置插入字符串方法

例如,

public static void main(String[] args) {

將被替換成:

public static void main(String[] args) throws java.lang.Exception {

我來到了我的目的,一個正則表達式匹配的Java方法:

(public|static|private|protected)* (void|int|String|double|float)+\s([a-zA-Z]*)\s*\(.*\)\s*

我知道您可以使用sed s/FIND/REPLACE/g file來替換模式,但是如何匹配Java方法並在參數)的右括號之後和任何Java方法的開頭大括號{之前插入throws java.lang.Exception

+0

如果什麼輸出'拋出Exception'已經存在或出現的下一行? – anubhava 2014-10-27 05:21:37

+0

假設它不在那裏。 – badjr 2014-10-27 05:28:40

+0

@sln,請提供該問題的鏈接。 – badjr 2014-10-27 08:10:51

回答

0

如何

sed -r 's/((public|static|private|protected|\s)*(void|int|String|double|float|\s)+\w+\([^)]*\)\s*)/\1throws java.lang.Exception/g' 

測試:

echo "public static void main(String[] args) { " | sed -r 's/((public|static|private|protected|\s)*(void|int|String|double|float|\s)+\w+\([^)]*\)\s*)/\1throws java.lang.Exception/g' 

會給作爲

public static void main(String[] args) throws java.lang.Exception { 
+0

我得到了原始字符串作爲輸出。也試圖grep你給的正則表達式,但它不匹配。 – badjr 2014-10-27 07:23:05

+0

@badjr對不起,輸入錯誤。已經糾正它 – nu11p01n73R 2014-10-27 08:22:11

相關問題