理解字符串模式的问题

时间:2011-03-02 08:42:34

标签: java regex string gwt

我正在通过跟随this tutorial来学习GWT,但是在第4步中我还没有完全理解这一点。以下行检查字符串是否与模式匹配:

    if (!str.matches("^[0-9A-Z\\.]{1,10}$")) {...}

在检查Pattern the documentation后,我理解字符^和$代表行的开头和结尾,[...] {1,10}表示括号中的部分[...]必须至少出现一次,但不得超过10次。我不明白的是括号内部分的最终字符。 0-9A-Z表示从0到9或从A到Z的字符范围。但是\\是什么。意思?

4 个答案:

答案 0 :(得分:3)

匹配点字符。由于dot在regexp中具有特殊含义,因此必须使用反斜杠进行转义。因为反斜杠在Java字符串中具有特殊含义,所以必须使用另一个反斜杠进行转义。

答案 1 :(得分:1)

点。 因为它是regexp语法中的特殊字符。 它还有两个转义符,因为\是java字符串中的特殊字符。

答案 2 :(得分:1)

匹配点字符。双斜杠'\\'只是意味着单个'\',因为你必须在java字符串中转义'\'。所以'\\。'被翻译成'\。'这意味着只匹配一个'。'字符。如果你刚用'。'它本身就没有逃脱,它会匹配任何角色。所以你必须逃避它,以匹配'。'字符。

答案 3 :(得分:1)

点“。”在正则表达式中意味着“任何角色”。转义点“。” (或“\。”)表示点字符本身(没有任何特殊的正则表达式行为,如非转义点)。

因此,例如,“123.ABC”可以是与给定正则表达式匹配的行(不包括换行符等)。