首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的正则表达式没有返回我需要的

我的正则表达式没有返回我需要的
EN

Stack Overflow用户
提问于 2013-08-29 19:13:16
回答 5查看 289关注 0票数 3

我有一段这样的文字。

google.sbox.p50 &google.sbox.p50(“如何”,“如何系领带”,“如何训练你的龙2预告片”,0,“如何做杯歌”,0,“如何在3分钟内得到6包”,0,“如何制作纸枪射击”,0,“如何基本”,“如何爱丽尔韦恩”,0,“如何唱像你最喜欢的艺术家”,0,“如何成为一个令人心碎的玛丽娜和钻石”,0,“如何驯服一匹马”,0],{“q”:“XJW--0 IKH6sqOp0ME-x5B7b_5wY”,"j":"5",“k”:1})

使用\\[([^]]+)\\],我可以得到我所需要的一切,但只要再多一点,我就不需要["how to",[[了。我只需要格式化的块,

["how to tie a tie",0]

谁能帮我修改一下我的表情,只得到我所需要的?我已经做了几个小时了,我无法理解RegEx的概念。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-29 19:20:59

我认为这就是您要寻找的与["how to tie a tie",0]格式相匹配的内容。

代码语言:javascript
复制
(\["[^"]+",\d\])

( ) -在整个过程中,所有的事情都在这个组中被捕获。

\[" -找到["

[^"]+ -查找除"以外的任何东西中的一个或多个

", -找到",

\d --找到一个数字,如果你想要的不仅仅是一个数字,那么做\d+

\] -匹配结尾的]

这个正则表达式中唯一的变量是引号([^"]+)和数字(\d+)中的任何内容。

Demo

如果不希望捕获组中的方括号,您可以这样做:

代码语言:javascript
复制
\[("[^"]+",\d+)\]

如果引号中有引号,我假设您不想匹配,因为它可能会破坏您使用它的任何目的,但是如果您这样做了,这应该是有效的:

代码语言:javascript
复制
\[("[^[\]]+",\d+)\]
票数 1
EN

Stack Overflow用户

发布于 2013-08-29 19:15:59

将开头和结尾的方括号都放在否定字符类中?

代码语言:javascript
复制
\\[([^][]+)\\]

\\[匹配文字[

\\]匹配文字]

[^][]是一个被否定的类,例如,它匹配除][以外的任何字符。它可能有点难以理解,但它相当于[^\\]\\[]。这里不需要双转义,因为您使用的是字符类(就像\\.等同于[.])

([^][]+)捕获方括号内的所有内容,确保里面没有][

在C#中,您可以使用@符号来避免每次都不得不双重转义,使用这可以使正则表达式如下所示:

代码语言:javascript
复制
var regex = new Regex(@"\[([^][]+)\]");

注意:这个正则表达式将捕获方括号内的所有内容。如果您希望具体地获得["how to tie a tie",0]格式,您可以更加精确。毕竟,regex将只匹配您使其匹配的内容:

代码语言:javascript
复制
var regex = new Regex(@"\["[^"]+",0\]");

在这里,我们有另一个否定的字符类:[^"]。这将匹配任何字符,而不是引号字符。

这个假设数字总是0,如示例文本块中所描述的那样。如果有多种可能的数字,则可以使用字符类[0-9]+

代码语言:javascript
复制
var regex = new Regex(@"\["[^"]+",[0-9]+\]");

您也可以使用\d+,但是这个字符类也与other characters匹配,后者可能会或不会使正则表达式呈现得更糟。如果您希望在字符之间允许可能的空格、制表符、换行符、表单提要更加谨慎,可以使用以下正则表达式:

代码语言:javascript
复制
var regex = new Regex(@"\[\s*"[^"]+"\s*,\s*[0-9]+\s*\]");

结论,可能有许多符合你需要的规则,只要你知道你的数据是如何通过的,这样你就可以选择一个有正确数量的高速公路。

票数 3
EN

Stack Overflow用户

发布于 2013-08-29 19:20:52

您必须使用此模式。

代码语言:javascript
复制
@"\[[^][]+\]"

关于方括号here的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18519267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档