Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从Java代码中提取方法和参数_Regex_Perl_Bash_Awk_Sed - Fatal编程技术网

Regex 从Java代码中提取方法和参数

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}中有一个方法调用,后面是一个曲线括号,一个带引号的字符串,然后是闭合曲线括号 一行中可能有多个字符串(因此单纯查找“”是行不通的),并且可

我有表格的文本:

Class inType=ReflectionUtils.getClass(c.getString(“in type”))

基于getString(“in type”),我需要将其转换为:

串入式

getString可以替换为getDouble和getBoolean

i、 在集合{getString,getDouble,getBoolean}中有一个方法调用,后面是一个曲线括号,一个带引号的字符串,然后是闭合曲线括号

一行中可能有多个字符串(因此单纯查找“”是行不通的),并且可能有多个getString。。。一行上的etc方法

有时,在getString和string之后可能会有新行


你将如何着手做这样的事情?

用一点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

    perl -lne 'print "$1 $2" while /get(String|Boolean|Double)\("([^"]+)/g ' file
    
    与@chooban的答案非常相似,但可以处理同一行中的多个事件


  • 很不错的!我想也许印刷品应该是
    print$2。" " . $3…
    获取类型中的
    String而不是类型中的
    getString的输出