我不知道这一点。我想捕获方括号内的字符串,无论其中是否包含字符。
[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
答案 0 :(得分:1)
您的正则表达式无法正常运行有以下三个原因:
[
是一个打开字符类的元字符。要匹配文字[
,您需要使用反斜杠对其进行转义。 ]
也是跟随[
元字符的元字符,但是如果您转义[
,则不必转义]
(不是这样做很痛苦。)
\d
仅捕获十进制数字,但是示例中包含字母A。如果是十六进制数字,则可能要使用[\dA-F]
而不是\d
,或者[\dA-Fa-f]
(如果可以小写找到数字)。如果可以是任何字母,则可以根据需要匹配小写字母而使用[\dA-Z]
或[\dA-Za-z]
。
+
表示“一个或多个事件”,因此它与空的[]
不匹配。改用*
“ 0个或多个事件”量词。
另外,您可能需要捕获(capturing group)
中的数字序列,以便能够在替换模式中引用它。
但是,正如Andrew Morton所建议的那样,看来您应该能够使用纯文本搜索/替换。
答案 1 :(得分:1)
首先,正则表达式是一种用于解析JSON格式数据的可怕工具。我敢肯定,您会发现有很多工具可以简单地在vb.net中读取JSON并以比将其作为文本的方式更简单的方式进行处理...例如:How to parse json and read in vb.net
原始答案(略有修改):
您快到了,但是您需要更改以下几项内容:
\[
和\]
.
是一个不错的选择+
的意思是“至少一个”-如果您也想匹配空括号,请改用*?
.*?
括在括号中,以便稍后在替换内容时可以引用该部分。\1
或$1
,具体取决于上下文
"\1"
或"$1"
,如果您确实需要在输出中使用双引号-也许只需要一个字符串变量?所有这些变为:
查找此内容:
\[(.*?)\]
替换为:
\1