※ 引述《Peruheru (还在想)》之铭言:
: ※ 引述《cashlalala (快来跟我做朋友)》之铭言:
: : 各位大大好,
: : 我想要用regex来匹配 java instance 的 name
: : 像是
: : java.temp.test@12434
: : org.apache.a@3235
: : abc@3546
: : 然后我自己测试了一下 ^\w[.[\w]+]*@[\d]+$
: ^ ^
: 中括号包住中括号的话,里面的那两个左右中括号似乎会被当作纯粹的字符看待
: 另外因为[]符号包住的字语意是“从[]内取出任何一个字”
: 所以并不能保证 . 符号一定在 \w 字符之前
: 也因此 ........@ 的情况也会被当成合法
[] 的规则其实是这样的:
平常时 [ 是特殊字符, ] 是普通字符
在 [ 出现时进入 character class 模式, 这时 [ 是普通字符, ] 是特殊字符
所以那一段的状况变成了
[.[\w]+]*
也就是““一点、[、或 \w”有至少一个, 后面跟着零或多个“]””
因此就能配到 ....... 这个字串了