求一个正则表达式,文本的内容

[disha04|D2079地煞寺庙4层]HITMON(@杀怪物时触发)HitPlay(@杀人物时触发)DAY只匹配[disha04地煞寺庙4层]不匹配|D2079和后边... [disha04|D2079 地煞寺庙4层] HITMON(@杀怪物时触发) HitPlay(@杀人物时触发) DAY

只匹配 [disha04 地煞寺庙4层] 不匹配|D2079 和后边是空格或者TAB键 还有后边的后边

只求正则表达式
貌似tab键 不能匹配

例如 [DHE 沃玛教主大殿]
[3 盟重省]

单独匹配似乎只能匹配英文数字混合 或者春英文的,不能匹配到纯数字的
\[([0-9a-zA-Z]+)\|\w*\s*(.+?)\]
展开
 我来答
貌似風輕
2015-09-08 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:693万
展开全部

可不可以这么理解

原字符串是

而你需要的是上面标红的那一些?当然这个原字符串可能重复很多次。

如果是这样的话,正则式可以这么写

(\[\w*)\|\w*\s*(.*?\])

这样第一个括号内匹配到的是“ [disha04”,第二个括号内匹配到的是“地煞寺庙4层]”

上诉正则式中“\”全表示转义,如果你是在代码中直接用的话需要再次转义“\”

(\\[\\w*)\\|\\w*\\s*(.*?\\])

另外如果确定字母、数字、空白等至少有一个,可以把“*”替换为“+”

更多追问追答
追问
如果是这个中括号不要的情况下   (\[\w*)\|\w*\s*(.*?\]) 是不是直接去掉就可以了?
追答
小括号内的是匹配到后可以取出来的部分,如果不要中括号,只需要把中括号移除小括号就可以(转义字符'\'要跟着'['、']'一起走)
\[(\w*)\|\w*\s*(.*?)\]

“\s”表示的是匹配空白,包括半角空格、制表符(tab)、换行符等。不过不同编程语言、不同正则式模式会导致“\s”的匹配不同。如果tab建匹配不到,可以把“\s”换成“[\s\t]”,"\t"表示制表符,也可以直接复制一个tab进去“[\s ]”(s和]中间是复制粘贴的一个tab)。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式