gpt4 book ai didi

c# - 我的正则表达式没有返回我需要的内容

转载 作者:行者123 更新时间:2023-11-30 15:32:41 25 4
gpt4 key购买 nike

我有这样一段文字。

google.sbox.p50 && google.sbox.p50(["how to",[["how to tie a tie",0],["how to train your dragon 2 trailer",0],["how to do the cup song",0],["how to get a six pack in 3 minutes",0],["how to make a paper gun that shoots",0],["how to basic",0],["how to love lil wayne",0],["how to sing like your favorite artist",0],["how to be a heartbreaker marina and the diamonds",0],["how to tame a horse in minecraft",0]],{"q":"XJW--0IKH6sqOp0ME-x5B7b_5wY","j":"5","k":1}])

使用 \\[([^]]+)\\] 我能够得到我需要的一切,但还有一些我没有的额外东西。我不需要 ["how to",[[。我只需要格式如下的 block ,

["如何打领带",0]

有人可以帮我修改我的表情,只得到我需要的吗?我已经研究了几个小时,但我无法理解 RegEx 的概念。

最佳答案

将左方括号和右方括号都放在否定字符类中?

\\[([^][]+)\\]

\\[ 匹配文字 [

\\] 匹配文字 ]

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

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

在 C# 中,您可以使用 @ 符号来避免每次都必须进行两次转义,使用它可以使正则表达式变成这样:

var regex = new Regex(@"\[([^][]+)\]");

注意:此正则表达式将捕获方括号内的所有内容。如果您希望具体获取格式 ["how to tie a tie",0],您可以更精确。毕竟,正则表达式只会匹配你让它匹配的内容:

var regex = new Regex(@"\["[^"]+",0\]");

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

此假设数字始终为 0,如您的示例文本 block 中所示。如果你有多种可能的数字,你可以使用字符类[0-9]+:

var regex = new Regex(@"\["[^"]+",[0-9]+\]");

你也可以使用\d+,但是这个字符类也匹配other characters这可能会或可能不会使正则表达式变得更糟。如果您想通过在字符之间允许可能的空格、制表符、换行符、换页符来更加谨慎,您可以使用此正则表达式:

var regex = new Regex(@"\[\s*"[^"]+"\s*,\s*[0-9]+\s*\]");

结论,可能有很多适合您需要的正则表达式,只要确保您知道数据是如何通过的,这样您就可以选择一个具有适当高速公路数量的正则表达式。

关于c# - 我的正则表达式没有返回我需要的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18519267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com