目前我正在使用这个(编辑:我错过了解释我使用这个来完全排除这些词:p ):
String REGEXP = "^[^(REG_)?].*";
但匹配(排除)ERG,EGR,GRE等......上面
P.S。 我删除了super,因为它是我必须过滤的另一个关键字,计算一个由以下三个单词组成的数组列表,用作模型:
REG_info1,info2,SUPER_info3等......
我需要三个过滤器匹配一个模型,我的问题只关注基于模型“info2”解析关键字的第二个过滤器。
答案 0 :(得分:12)
只需按字面输入:
REG
这只会匹配REG
。
所以:
String REGEXP = "^(REG_|SUPER_)?.*";
修改在您明确表示要匹配不以REG_
或SUPER_
开头的每个字词后,您可以尝试这样做:
\b(?!REG_|SUPER_)\w+
\b
是一个单词边界,而(?!
expr
)
这个表达式是一个先行断言。
答案 1 :(得分:2)
正如大家已经回复的那样,如果你想匹配以REG开头的行,你使用正则表达式“^ REG”,如果你想匹配任何开始REG或SUPER的行,你使用“^(REG | SUPER )“和正则表达否定一般来说是一个棘手的问题。
要匹配所有不以'REG'开头的行,您需要匹配“^ [^ R] | R [^ E] | RE [^ G]”和正则表达式以匹配所有不以REG或SUPER开头的行可以以类似的方式构造(首先将括号中的“not REG”分组,然后将“not SUPER”模式构造为“[^ S] | S [^ U] | [SU [^ P] ...” ,对此进行分组并对两个组使用轮换)。
答案 2 :(得分:0)
[]表示字符类。这不是你想要的。您可以使用“REG”来匹配REG。 (您可以使用REG | SUPER作为REG或SUPER)
答案 3 :(得分:0)
怎么样
\mREG\M
// \mREG\M
//
// Options: ^ and $ match at line breaks
//
// Assert position at the beginning of a word «\m»
// Match the characters “REG” literally «REG»
// Assert position at the end of a word «\M»
答案 4 :(得分:0)
REGEXP = "^(REG_|SUPER_)"
将匹配在字符串开头具有REG_或SUPER_的任何内容。在“(.. | ..)”
组之后你不需要更多