我有一段这样的文字。
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的概念。
发布于 2013-08-29 19:20:59
我认为这就是您要寻找的与["how to tie a tie",0]格式相匹配的内容。
(\["[^"]+",\d\])( ) -在整个过程中,所有的事情都在这个组中被捕获。
\[" -找到["
[^"]+ -查找除"以外的任何东西中的一个或多个
", -找到",
\d --找到一个数字,如果你想要的不仅仅是一个数字,那么做\d+
\] -匹配结尾的]
这个正则表达式中唯一的变量是引号([^"]+)和数字(\d+)中的任何内容。
Demo
如果不希望捕获组中的方括号,您可以这样做:
\[("[^"]+",\d+)\]如果引号中有引号,我假设您不想匹配,因为它可能会破坏您使用它的任何目的,但是如果您这样做了,这应该是有效的:
\[("[^[\]]+",\d+)\]发布于 2013-08-29 19:15:59
将开头和结尾的方括号都放在否定字符类中?
\\[([^][]+)\\]\\[匹配文字[
\\]匹配文字]
[^][]是一个被否定的类,例如,它匹配除][以外的任何字符。它可能有点难以理解,但它相当于[^\\]\\[]。这里不需要双转义,因为您使用的是字符类(就像\\.等同于[.])
([^][]+)捕获方括号内的所有内容,确保里面没有]或[。
在C#中,您可以使用@符号来避免每次都不得不双重转义,使用这可以使正则表达式如下所示:
var regex = new Regex(@"\[([^][]+)\]");注意:这个正则表达式将捕获方括号内的所有内容。如果您希望具体地获得["how to tie a tie",0]格式,您可以更加精确。毕竟,regex将只匹配您使其匹配的内容:
var regex = new Regex(@"\["[^"]+",0\]");在这里,我们有另一个否定的字符类:[^"]。这将匹配任何字符,而不是引号字符。
这个假设数字总是0,如示例文本块中所描述的那样。如果有多种可能的数字,则可以使用字符类[0-9]+。
var regex = new Regex(@"\["[^"]+",[0-9]+\]");您也可以使用\d+,但是这个字符类也与other characters匹配,后者可能会或不会使正则表达式呈现得更糟。如果您希望在字符之间允许可能的空格、制表符、换行符、表单提要更加谨慎,可以使用以下正则表达式:
var regex = new Regex(@"\[\s*"[^"]+"\s*,\s*[0-9]+\s*\]");结论,可能有许多符合你需要的规则,只要你知道你的数据是如何通过的,这样你就可以选择一个有正确数量的高速公路。
发布于 2013-08-29 19:20:52
https://stackoverflow.com/questions/18519267
复制相似问题