正则表达式和java忽略关键字和引号内的字符串

时间:2014-01-25 20:26:58

标签: java regex

我正在搜索必须以字母开头,后跟字母或字符或没有任何内容的关键字

我正在寻找的东西:x,x2,xx等

我的正则表达式是[A-Za-z] [A-Za-z0-9] + | [a-zA-Z]

我需要忽略诸如INT,WRITE,READ等字样,不知道如何实现

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

任何帮助?

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

(?!\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", "");