正则表达式:我如何强加完美的字符串匹配?

时间:2009-04-17 12:16:07

标签: regex

目前我正在使用这个(编辑:我错过了解释我使用这个来完全排除这些词:p ):

   String REGEXP = "^[^(REG_)?].*";

但匹配(排除)ERG,EGR,GRE等......上面

P.S。 我删除了super,因为它是我必须过滤的另一个关键字,计算一个由以下三个单词组成的数组列表,用作模型:

REG_info1,info2,SUPER_info3等......

我需要三个过滤器匹配一个模型,我的问题只关注基于模型“info2”解析关键字的第二个过滤器。

5 个答案:

答案 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_的任何内容。在“(.. | ..)”

组之后你不需要更多