Regex 从Java代码中提取方法和参数
我有表格的文本: Class inType=ReflectionUtils.getClass(c.getString(“in type”)) 基于getString(“in type”),我需要将其转换为: 串入式 getString可以替换为getDouble和getBoolean i、 在集合{getString,getDouble,getBoolean}中有一个方法调用,后面是一个曲线括号,一个带引号的字符串,然后是闭合曲线括号 一行中可能有多个字符串(因此单纯查找“”是行不通的),并且可能有多个getString。。。一行上的etc方法 有时,在getString和string之后可能会有新行Regex 从Java代码中提取方法和参数,regex,perl,bash,awk,sed,Regex,Perl,Bash,Awk,Sed,我有表格的文本: Class inType=ReflectionUtils.getClass(c.getString(“in type”)) 基于getString(“in type”),我需要将其转换为: 串入式 getString可以替换为getDouble和getBoolean i、 在集合{getString,getDouble,getBoolean}中有一个方法调用,后面是一个曲线括号,一个带引号的字符串,然后是闭合曲线括号 一行中可能有多个字符串(因此单纯查找“”是行不通的),并且可
你将如何着手做这样的事情?用一点Perl来结束我的一天:
perl -ne '/get(String|Double|Boolean)\("(.*?)"\)/ && print "$1 $2\n"' <input file>
perl-ne'/get(String | Double | Boolean)\((.*?)/&打印“$1$2\n”
n使perl逐行循环文件,regex在从匹配的任何行打印出这些组之前,先查找几个捕获组。这不能处理
getString
之后换行符的边缘情况,以下是几种方法:
grep
和sed
grep -oP 'get\K(String|Boolean|Double)\("[^"]+' file | sed 's/("/ /'
-o
表示“仅打印匹配的字符串,-p
打开与Perl兼容的正则表达式。\K
将丢弃与该点匹配的任何内容。最后的sed
刚刚修复了格式perl -lne 'print "$1 $2" while /get(String|Boolean|Double)\("([^"]+)/g ' file
与@chooban的答案非常相似,但可以处理同一行中的多个事件很不错的!我想也许印刷品应该是
print$2。" " . $3…
获取类型中的String而不是类型中的getString的输出