0 0

找出语句中的变量——正则表达式10

 ab123_c == 'xx_123_ABC'|| a==1 && ttt != “aaa\"'\\” ||  xxx >= 1.12345 && abc==true && ddd==false  



找出这条语句中的所有变量
2012年9月05日 19:29

1个答案 按时间排序 按投票排序

1 0

采纳的答案

public class Main {
    
    public static void main(String[] args) throws IOException {

        
        String str = "ab123_c == 'xx_123_ABC'|| a==1 && ttt != \"aaa\"'\" ||  xxx >= 1.12345 && abc==true && ddd==false";
        
        String variable = "([a-zA-Z_][a-zA-Z0-9_]*)";
        String keyword = "(true|false)";
        
        Matcher variableMatcher = Pattern.compile(variable).matcher(str);
        
        while(variableMatcher.find()) {
            String var = variableMatcher.group(1);
            if(Pattern.matches(keyword, var)) {
               continue; 
            }
            int index = str.indexOf(var);
            boolean isConstString = false;
            do {
                if(isConstString(str, str.indexOf(var) - 1)) {
                    isConstString = true;
                    break;
                }
                index = str.indexOf(var, index+1); 
            } while(index != -1);
            
            if(isConstString) {
               continue; 
            }
            
            System.out.println(var);
        }
    }
    
    private static boolean isConstString(String str, int index) {
        if(index <= 0) {
            return false;
        }
        char c = str.charAt(index);
        
        return c == '\'' || c == '\"';
    }

}


这种方式肯定不好,需要使用如ANTLR 进行词法/语法分析。

2012年9月05日 20:17

相关推荐

    AWK Tutorial Guide

    1. 数据提取:AWK可以从大型日志文件中提取特定信息,例如找出访问次数最多的IP地址。 2. 数据转换:它可以将数据从一种格式转换为另一种格式,如CSV到JSON。 3. 统计分析:AWK可以进行简单的统计计算,如平均值、中...

    linux与unix shell编程指南 ——1

    5. 正则表达式:正则表达式是进行文本匹配和搜索的强大工具,是Shell编程中的重要组成部分。 6. 脚本调试与优化:如何调试Shell脚本,找出并修复错误,以及如何编写高效、可读性强的脚本。 7. 高级特性:如数组、...

    linux下AWK学习笔记

    例如,要找出一个CSV文件中价格大于100的项,可以使用以下命令: ```bash awk -F ',' '$3 &gt; 100 {print $0}' sales.csv ``` 这里,`-F ','`指定了字段分隔符为逗号,`$3 &gt; 100`是模式,表示匹配第三列值大于100的行...

    基于Python实现汉语多音字注音系统【优质毕业设计、课程设计项目】.zip

    例如,找出句子中的所有汉字或特定格式的注音。 5. **拼音库**:为了获取汉字的发音,可以使用Python的第三方库,如`pypinyin`,它能够将汉字转换为拼音,包括多音字的各个读音。 6. **数据库操作**:系统可能需要...

    The Practice of Programming(中文版)——程序设计实践

    书中探讨了文本流I/O、正则表达式和文本模式匹配,这些都是处理文本数据的有效工具。 9. **网络编程**:网络编程涉及网络协议、套接字编程和异步I/O等内容。书中介绍了如何编写网络应用程序,处理客户端-服务器通信...

    JavaScript权威指南 第四版

    最后,书中会讨论性能优化和最佳实践,帮助开发者写出更高效、可维护的代码,并且会讲解如何调试JavaScript,找出并修复程序中的错误。 总的来说,《JavaScript权威指南第四版》是一本覆盖了JavaScript语言全貌的...

    代码级自动化测试方法文.pdf

    - 基于数据流的分析:模拟程序执行路径,找出运行时可能出现的严重错误,如资源泄漏和安全漏洞。 4. 静态分析实例: - 在这个基于规则的案例中,我们检查Switch语句是否包含Default分支。如果缺乏Default分支,...

    2017CA_2017蓝桥杯A组试题讲解_

    4. **字符串处理**:字符串匹配、模式查找、正则表达式等在实际问题中很常见。 5. **文件操作和输入输出**:学会如何读写文件,处理标准输入输出,这对很多实际的编程挑战至关重要。 6. **逻辑思维和问题分析**:...

    Linux实战awk详解

    模式可以是正则表达式,用于匹配输入行;动作则是在匹配成功后执行的代码。例如,"BEGIN"模式在处理任何输入前执行,"END"模式在处理完所有输入后执行,而"{print $1}"这样的模式-动作对会打印每行的第一个字段。 ...

    CodeWars-daily-challenges

    在解决CodeWars挑战时,学会使用console.log、debugger、开发者工具等调试技巧,可以帮助找出代码中的问题,提高解决问题的速度。 总的来说,CodeWars-daily-challenges项目是一个绝佳的学习和提升JavaScript技能的...

    高级Bash编程-by Mendel Cooper

    5. **遵循Shellcheck**:Shellcheck是一个静态分析工具,能找出脚本中的潜在问题和不一致之处。 五、Bash编程进阶 1. **信号处理**:使用`trap`命令捕捉并处理信号,如`trap 'clean_up_function' EXIT`在脚本退出...

    廖雪峰Python3教程网页版

    此外,还将介绍常见的调试技巧和工具,帮助开发者找出并修复代码中的错误。 【Python3实战项目】 教程中的实战部分,可能会包含Web开发(如使用Flask或Django框架)、数据分析(使用Pandas和NumPy)以及自动化脚本...

    Python Cookbook

    9. **1.9 在一个语句中赋值和测试**:演示了如何在一个表达式中同时完成赋值和条件判断。 10. **1.10 使用列表推导式代替`map`和`filter`**:介绍如何使用列表推导式来简化常见的数据转换操作,使其更加直观和易于...

    CrownLinux:适用于bash脚本的Student Linux项目

    - **使用正则表达式**:在脚本中应用正则表达式进行文本匹配和处理。 - **脚本优化**:了解如何提高脚本性能,减少资源消耗。 通过CrownLinux项目,学生不仅可以深入理解Linux操作系统,还能掌握一门强大的自动化...

    cnblogs

    10. **正则表达式**:在Shell脚本中,可以利用正则表达式进行文本匹配和处理,如`grep`、`sed`、`awk`等命令。 通过学习和实践以上知识点,你可以编写出高效、实用的Shell脚本来自动化日常的工作流程,提升工作效率...

    commands:我常用的脚本

    7. **错误处理和调试**:Perl提供了条件语句、异常处理和debugging工具来帮助开发者找出和修复问题。 8. **命令行参数**:在命令行中运行Perl脚本时,可以传递参数给脚本,通过`$ARGV[0]`, `$ARGV[1]`等获取这些...

    javascript常用函数.docx

    以上只是JavaScript常用函数和概念的一部分,JavaScript还有许多其他功能和API,如数组操作、正则表达式、事件处理、AJAX异步通信等,学习JavaScript意味着深入理解这些概念,并能够灵活运用到实际项目中。

    aoc2019:Code 2019的到来

    10. **调试技巧**:学会使用`print`语句、断点、`pdb`调试器等工具,有助于找出并修复代码中的错误。 在完成AOC2019的挑战过程中,你不仅能够巩固和提高Python编程技能,还能锻炼解决问题的能力,提升编程思维。...

    你必须知道的495个C语言问题

    可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数...

Global site tag (gtag.js) - Google Analytics