有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Regex和java忽略引号内的关键字和字符串

我正在搜索的关键字必须以字母开头,后跟字母或字符,或者什么都没有

我要找的东西:x、x2、xx等等

我得到的正则表达式是[A-Za-z][A-Za-z0-9]+|[A-Za-z]

我需要忽略INT、WRITE、READ等词,不知道如何实现

如果它遇到一个带引号的字符串,我需要它忽略引号中的任何内容

有什么帮助吗

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    你的问题我不清楚。如果要接受以字母开头的单词,并以字母或数字(或下划线)继续;但如果从列表中排除单词,则可以使用正则表达式:

    (?!\b(?:INT|WRITE|READ)\b)\b[A-Za-z]\w*\b
    

    如果要排除由所有大写字母组成的单词,而不是列表,请尝试:

    (?!(?:\b[A-Z]+\b))\b[A-Za-z]\w*\b
    

    在Java中,我认为需要将元字符的反斜杠增加一倍,因此可能类似于:

    "(?!\\b(?:INT|WRITE|READ)\\b)\\b[A-Za-z]\\w*\\b"
    

    如果还希望排除引号内的字符串,可以使用以下方法:

    "[^"]+"|((?!\b(?:INT|WRITE|READ)\b)\b[A-Za-z]\w*\b)
    

    然后检查捕获组1中是否有任何内容不包括双引号描述的短语

    另一种选择是将所有不需要的参数替换为单词列表中的任何内容以及引用的文本。在Java中,类似于:

    String resultString = subjectString.replaceAll("\"[^\"]*\"|\\b(?:WRITE|INT|READ)\\b", "");