我要捕获以下字符串中的BBKH2-0272-2
,BBH@5
,1234
(捕获值,其中键为 ssidname 或 SSIDName )。
{"SSIDIndex":2,"SSIDName":"BBKH2-0272-2" ,"Band":"2.4GHz","Status":"RadioIndex":1,"SSIDIndex":3,"SSIDName":"BBH@5","ssidname":"1234", "ssid_name":"MKLM-098", ssidname=ppoin }
我正在使用此正则表达式:
(?<=(?i)(“ SSIDName”:“))(\ w {1,8})
但是它不起作用。预先感谢。
答案 0 :(得分:1)
您不需要后面看,可以使用此正则表达式捕获第1组
(?i)"SSIDName":"([^"]+)"
基本上,您希望捕获键属性SSIDName
的所有值,并且不区分大小写,因为其中一个键是小写字母。
您的正则表达式(?<=(?i)("SSIDName":"))(\w{1,8})
很好,但是在捕获BBH@5
时会阻塞,因为您正试图使用\w
捕获它,而@
不是{{1}的一部分}。如果您将正则表达式更改为此,
\w
然后,即使您的正则表达式也可以捕获您所需的内容。
但是,一般来说,您应尽量使正则表达式保持简单,并避免环视,因为并非所有语言和工具都支持环视,并且正则表达式可用于大多数语言/工具。
答案 1 :(得分:1)
答案 2 :(得分:1)
也尝试一下。
(?<=(?i)("SSIDName":"))([a-zA-z0-9-@]+)
答案 3 :(得分:1)
我不知道您为什么一直使用如此困难的正则表达式
这可以通过使用
来完成regex:/ ^“ SSIDName”:“(。*?)” / gmi
g-全局检查,即在第一场比赛后不返回。
m-从行首到行尾匹配。多行。
i-不区分大小写的匹配。
选中Demo here。
答案 4 :(得分:0)
您还可以尝试以下正则表达式(非常接近您的正则表达式):
(?i)(?<="SSIDName":")[^"]+(?=")
带有字符串:
{"SSIDIndex":2,"SSIDName":"BBKH2-0272-2" ,"Band":"2.4GHz","Status":"RadioIndex":1,"SSIDIndex":3,"SSIDName":"BBH@5","ssidname":"1234" }
它只会选择:
BBKH2-0272-2
BBH@5
1234
所示