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(“[”,”“”)。