作者Peruheru (还在想)
看板RegExp
标题Re: [问题] java instance name
时间Thu Sep 25 10:19:44 2014
※ 引述《cashlalala (快来跟我做朋友)》之铭言:
: 各位大大好,
: 我想要用regex来匹配 java instance 的 name
: 像是
: java.temp.test@12434
: org.apache.a@3235
: abc@3546
: 然後我自己测试了一下 ^\w[.[\w]+]*@[\d]+$
^ ^
中括弧包住中括弧的话,里面的那两个左右中括弧似乎会被当作纯粹的字元看待
另外因为[]符号包住的字语意是「从[]内取出任何一个字」
所以并不能保证 . 符号一定在 \w 字元之前
也因此 ........@ 的情况也会被当成合法
: 正常的case都会匹配, 但是某些错误的case也会被匹配到
: 像是
: abc.test........@46564
: 请问我该怎麽改呢?
: 请各位大大指教 感谢!
我自己是改成这样啦
^\w+(\.\w+)*@\d+$
前後都一样,只有把原本中括弧的部分抽掉
*****
修改:\d不用中括弧包住意思也一样
*****
因为我觉得中间那部分你应该是用不到中括弧
我认为你要的其实不是 「 . 或 \w 」
而是 「 . 後面接着 \w 」的情况
然後用括弧包住後面加上*表示这种组合允许完全没有 (abc@3546)
但是如果要有就一定要是上面的规则 (org.apache.a@3235 或 org.apache@3235)
应该就是这样吧...其实我也不是很熟,自己刚刚试这样应该是吻合的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.18.8
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/RegExp/M.1411611587.A.689.html
※ 编辑: Peruheru (220.134.18.8), 09/25/2014 10:30:01