如何匹配以“SAFE_”开头,并以(“BACKPACK”或“COOLER”)结尾的文字,除了“SAFE_JOURNEY_BACKPACK”以外
 本帖最后由 阴阳师元素祭祀 于 2020-7-14 19:53 编辑 
可能是这样?
SAFE_.*(BACKPACK)|(COOLER)
并且不能是那种结果啊 那还是看看海螺的吧↓ (纯正则写起来我感觉会难受)
[PCD] 跟着海螺学正则
https://www.mcbbs.net/thread-827651-1-1.html
(出处: Minecraft(我的世界)中文论坛)
乱试:
菜 我 菜
在甩开grep
使用idea之后
我试出来了这个
(?>SAFE_JOURNEY_BACKPACK)?+SAFE_.*(BACKPACK)|(COOLER)复制代码
可能是这样?
SAFE_.*(BACKPACK)|(COOLER)
并且不能是那种结果啊 那还是看看海螺的吧↓ (纯正则写起来我感觉会难受)
[PCD] 跟着海螺学正则
https://www.mcbbs.net/thread-827651-1-1.html
(出处: Minecraft(我的世界)中文论坛)
乱试:
(?>SAFE_JOURNEY_BACKPACK)?+SAFE_.*(BACKPACK)|(COOLER)
 
- (?>SAFE_JOURNEY_BACKPACK)?+SAFE_.*(BACKPACK)|(COOLER)
(?>SAFE_JOURNEY_BACKPACK)?+SAFE_.*(BACKPACK)|(COOLER) 本帖最后由 William_Shi 于 2020-7-14 19:36 编辑 
试试看
SAFE_(^((?!JOURNEY).))*((BACKPACK)|(COOLER))
写的可能略冗长,但应该可以用
匹配的是SAFE_开头,BackPack或Cooler结尾的字符串
而safe和结尾的backpack、cooler之间不可以有journey字符串
但是要实现你那个完全的排除,很难
阴阳师元素祭祀 发表于 2020-7-14 18:51
可能是这样?
SAFE_.*(BACKPACK)|(COOLER)
并且不能是那种结果啊 那还是看看海螺的吧↓ (纯正则写起来我 ...
试试看
SAFE_(^((?!JOURNEY).))*((BACKPACK)|(COOLER))
写的可能略冗长,但应该可以用
匹配的是SAFE_开头,BackPack或Cooler结尾的字符串
而safe和结尾的backpack、cooler之间不可以有journey字符串
但是要实现你那个完全的排除,很难
William_Shi 发表于 2020-7-14 19:35
试试看
SAFE_(^((?!JOURNEY).))*((BACKPACK)|(COOLER))
写的可能略冗长,但应该可以用
你给的正则不能匹配
SAFE_JOURNEY_BACKPACKSAFE_JOURNEY_BACKPACK
复杂的我没测试
当然 我的正则我也没测试复杂的X
阴阳师元素祭祀 发表于 2020-7-14 19:38
刚丢掉grep 然后使用比较方便的idea你就过来了
你给的正则不能匹配
是的,我说清楚了要完全一致的逆向匹配很麻烦
正则不太适合进行逆向匹配
建议直接在正则前面加一点逻辑过滤掉那个journeybackpack字符串
@Freeze_Dolphin
 本帖最后由 602269287 于 2020-7-14 19:42 编辑 
^SAFE_(?!JOURNEY).*(BACKPACK)|(COOLER)$这个我试过,可以达到你的要求
^SAFE_(?!JOURNEY).*(BACKPACK)|(COOLER)$这个我试过,可以达到你的要求
William_Shi 发表于 2020-7-14 19:40
是的,我说清楚了要完全一致的逆向匹配很麻烦
正则不太适合进行逆向匹配
建议直接在正则前面加一点逻辑过 ...
其实我一开始做的时候就想到先判断SAFE_JOURNEY_BACK了,只是好奇这种怎么用regex匹配(最近在研究regex)
Freeze_Dolphin 发表于 2020-7-14 21:41
其实我一开始做的时候就想到先判断SAFE_JOURNEY_BACK了,只是好奇这种怎么用regex匹配(最近在研究regex ...
^SAFE_(?!JOURNEY).*(BACKPACK)|(COOLER)$
^(SAFE_(?!JOURNEY_BACKPACK).*(BACKPACK)|(COOLER))$
第一个是不能包含JOURNEY的,第二个是版主说的JOURNEY不能出现两次的解决方案~~我想哭