Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式代码:是否包含字符_Regex_Vb.net - Fatal编程技术网

Regex 正则表达式代码:是否包含字符

Regex 正则表达式代码:是否包含字符,regex,vb.net,Regex,Vb.net,我想不出来。我想捕获方括号内的字符串,无论是否包含字符 [5123512], [412351, 1235123, 5125123], [12312-AA] and [] 我想把方括号转换成双引号 [5123512] ==> "5123512" [412351, 1235123, 5125123] ==> "412351, 1235123, 5125123" [12312-AA] ==> "12312-AA" [] == > "" 我尝试了这个\[\d+\],但没有成

我想不出来。我想捕获方括号内的字符串,无论是否包含字符

[5123512], [412351, 1235123, 5125123], [12312-AA] and []
我想把方括号转换成双引号

[5123512] ==> "5123512"
[412351, 1235123, 5125123] ==> "412351, 1235123, 5125123"

[12312-AA] ==> "12312-AA"
[] == > ""
我尝试了这个
\[\d+\]
,但没有成功

这是我的示例数据,它是json格式。 描述中的方括号不需要更改,只需更改属性即可

{"results":
[{"listing": 4613456431,"sku": [5123512],"category":[412351, 1235123, 
5125123],"subcategory": "12312-AA", "description":"This is [123sample]"} 
{"listing": 121251,"sku":[],"category": [412351],"subcategory": "12312-AA", 
"description": "product sample"}]}

TIA您的正则表达式不起作用有三个原因:

  • [
    是打开字符类的元字符。要匹配文本
    [
    ,需要用反斜杠转义。
    ]
    [
    元字符之后也是元字符,但如果转义
    [
    则不需要转义
    ]
    (这并不是说这样做有害)

  • \d
    仅捕获十进制数字,但是您的示例包含字母A。如果这是十六进制数字,您可能希望使用
    [\dA-F]
    而不是
    \d
    ,或者
    [\dA-Fa-F]
    而不是
    [\dA-F]
    ,如果可以在小写字母中找到数字。如果可以是任何字母,您可以使用
    [\dA-Z]
    [\dA-Za-z]
    取决于您匹配小写字母的需要

  • +
    表示“一个或多个事件”,因此它与空的
    []
    不匹配。请使用
    *
    量词“0个或多个事件”

  • 此外,您可能需要捕获
    (捕获组)
    中的数字序列,以便能够在替换模式中引用它


    但是,正如建议的那样,您应该能够使用纯文本搜索/替换。

    您的正则表达式无法工作,原因有三:

  • [
    是打开字符类的元字符。要匹配文本
    [
    ,需要用反斜杠转义。
    ]
    [
    元字符之后也是元字符,但如果转义
    [
    则不需要转义
    ]
    (这并不是说这样做有害)

  • \d
    仅捕获十进制数字,但是您的示例包含字母A。如果这是十六进制数字,您可能希望使用
    [\dA-F]
    而不是
    \d
    ,或者
    [\dA-Fa-F]
    而不是
    [\dA-F]
    ,如果可以在小写字母中找到数字。如果可以是任何字母,您可以使用
    [\dA-Z]
    [\dA-Za-z]
    取决于您匹配小写字母的需要

  • +
    表示“一个或多个事件”,因此它与空的
    []
    不匹配。请使用
    *
    量词“0个或多个事件”

  • 此外,您可能需要捕获
    (捕获组)
    中的数字序列,以便能够在替换模式中引用它


    然而,正如建议的那样,看起来您应该能够使用纯文本搜索/替换。

    首先,regex是解析JSON格式数据的可怕工具。我相信您会发现很多工具,可以在vb.net中简单地读取JSON,并以比将其作为文本更简单的方式对其进行处理……例如:

    原始答案(略加编辑):

    你就快到了,但有几件事你需要改变:

    • 在正则表达式模式中,转义方括号:
      \[
      \]
    • 如果您只想捕获括号中的所有字符,那么
      是一个好方法
    • 加号
      +
      表示“至少有一个”-如果要匹配空括号,请使用
      *?
      • 问号的意思是“lazy”-它明确地告诉正则表达式匹配尽可能短的字符序列(而不是转到下一个方括号…)
    • *?
      括在括号中,以便以后替换内容时可以引用该部分
    • 最后,要替换的输出值/模式是
      \1
      $1
      ,具体取决于上下文
      • 或者
        “\1”
        或者
        “$1”
        如果您真的需要输出中的双引号,那么您可能只需要一个字符串变量
    总而言之,这将成为:

    找到这个:
    \[(.*)\]

    替换为:
    \1


    首先,regex是一个解析JSON格式数据的可怕工具。我相信你会发现很多工具,可以简单地在vb.net中读取JSON,并以比将其作为文本更简单的方式对其进行处理……例如:

    原始答案(略加编辑):

    你就快到了,但有几件事你需要改变:

    • 在正则表达式模式中,转义方括号:
      \[
      \]
    • 如果您只想捕获括号中的所有字符,那么
      是一个好方法
    • 加号
      +
      表示“至少有一个”-如果要匹配空括号,请使用
      *?
      • 问号的意思是“lazy”-它明确地告诉正则表达式匹配尽可能短的字符序列(而不是转到下一个方括号…)
    • *?
      括在括号中,以便以后替换内容时可以引用该部分
    • 最后,要替换的输出值/模式是
      \1
      $1
      ,具体取决于上下文
      • 或者
        “\1”
        或者
        “$1”
        如果您真的需要输出中的双引号,那么您可能只需要一个字符串变量
    总而言之,这将成为:

    找到这个:
    \[(.*)\]

    替换为:
    \1


    使用regex
    \[(.*?)\]
    和substitute
    “\1”
    是否表示要执行
    Dim newString=yourString.Replace(“[”,”“”)。