我非常接近解决这个感谢这个帖子Regex find word in the string阿帕奇完全匹配的Word里面字符串
但我现在还不能100%存在。
如果我用这个正则表达式与Apache的BrowserMatchNoCase沿
^(.*?)(\b360Spider\b)(.*)$
我得到如下结果:
- 360Spider =匹配
- 360spider =匹配
- 360SpIdEr =匹配
- 360spiders =不匹配
- Not360Spider =敌不过
- Not360Spider =匹配
- 不-360spider =匹配
我需要它,不管是什么放在前面或单词后面的词360Spider匹配,所以NOT360Spider应该是一场比赛。
在此先感谢,我的正则表达式多年来有所改善,但我仍然无法完全理解让事情完美而不会导致误报。
同时我不想介绍其他误报,这就是为什么我首先深入研究这个问题,所以其他用户代理名称喜欢“Exabot”和“Alexabot”我不想让“ exabot“部分Alexabot被检测到。
所以,让我们在另一个例子说:
^(.*?)(\bExabot\b)(.*)$
我得到如下结果:
- Alexabot =敌不过
- Exabot =匹配
- exAbot =匹配
如果我删除单词边界“\ B” 如下:
^(.*?)(Exabot)(.*)$
我得到如下结果:
- Alexabot =匹配
- Exabot =匹配
- exAbot =匹配
- anythingExabot =匹配
所以我想我必须坚持单词边界“\ b “现在的技巧是让printf将”\ b“写入我的字符串中,而不是将其视为退格字符。
删除单词边界'\ b'。顺便说一下,它也会匹配'360spiderrs'。 –
*这甚至可能吗?* - 不,不可能理解你在问什么。 “'exabot”与'^(。*?)(\ b360Spider \ b)(。*)$'匹配肯定是不可能的。 –
谢谢你们,我用更多的例子更新了我的问题,似乎我必须坚持使用'\ b'的单词边界 – MitchellK