IJ在正则表达式 - 这是什么意思?

时间:2014-06-18 19:33:52

标签: regex

我升级到的新版本的类型扩展软件包含了正则表达式。我试图更好地理解它们,所以想要分解它们所包含的两个,以帮助避免在一个单词开头的双重大写。

第一个是

\b[:upper:][:upper:][:lower:]+

我认为这意味着在条目开始之前有一个单词分隔符,前两个字母有一个Capital,然后是一个或多个小写字母。

第二个是

\b(IJ|CC)[:lower:]+

我指的是,如果一个单词以大写“I”和大写“J”或两个连续的大写“C”加上一个或多个小写字母开头,以允许它们作为例外。

我觉得我在这里遗漏了一些东西。任何人都可以建议这些表达是什么意思?

2 个答案:

答案 0 :(得分:1)

" IJ"表示字符序列," I"其次是" J" - 没有什么特别的 - 关于行为的结论(如果不是推理)是正确的。

表达式\b(IJ|CC)[:lower:]+ 2 只是\b[:upper:][:upper:][:lower:]+ 1 限制性子集,它限制了输入以" IJ"开始或" CC"。

String    Matches
------    -------
foo       (None)
IJ        (None)     No mach on [:lower:]+
IJfoo     1, 2       Matches IJ, which also matches [:upper:][:upper:]
CCfoo     1, 2
XXfoo     1          Matches [:upper:][:upper:], not IJ|CC

答案 1 :(得分:0)

[:lower:]和[:upper:]是POSIX正则表达式。

\b Word boundary
(IJ|CC) = "IJ" or "CC"
[:lower:] = [a-z]
[:upper:] = [A-Z]
+ One or more matches of what is right before it.

http://www.regular-expressions.info/posixbrackets.html