※ 引述《Peruheru (還在想)》之銘言:
: ※ 引述《cashlalala (快來跟我做朋友)》之銘言:
: : 各位大大好,
: : 我想要用regex來匹配 java instance 的 name
: : 像是
: : java.temp.test@12434
: : org.apache.a@3235
: : abc@3546
: : 然後我自己測試了一下 ^\w[.[\w]+]*@[\d]+$
: ^ ^
: 中括弧包住中括弧的話,裡面的那兩個左右中括弧似乎會被當作純粹的字元看待
: 另外因為[]符號包住的字語意是「從[]內取出任何一個字」
: 所以並不能保證 . 符號一定在 \w 字元之前
: 也因此 ........@ 的情況也會被當成合法
[] 的規則其實是這樣的:
平常時 [ 是特殊字元, ] 是普通字元
在 [ 出現時進入 character class 模式, 這時 [ 是普通字元, ] 是特殊字元
所以那一段的狀況變成了
[.[\w]+]*
也就是「「一點、[、或 \w」有至少一個, 後面跟著零或多個「]」」
因此就能配到 ....... 這個字串了