匹配 [ ] 里面的数据
数据内容:
[dddd]
name = np
value = ff
[cccc]
错误表达式:(?<=\[).+(?=\])
.+ 会匹配到 [ ] 和 [ ] 之间的内容
正确表达式: (?<=\[)[^\]]*(?=\])
[^\]]
要匹配的内容不是 ] ,也就是遇到第一个 ] 就结束。
(?<=[).+?(?=]) 在加号后面加个问号也可以,表示尽可能少匹配。
= 号前面的数据
错误表达式:[^\s].+(?==)
, 会把空格匹配到,因为用的是 . 号 ,表示任意单个字符,这就包含了空格
正确表达式: \S+(?=\s*=)
\s* :代表多个空格。
但如果是ini文件提取数据,那得分节点,这表达式会取所有节点中的键值。
两个[ ] 号之间 = 号前面的值,也就是只取一个节点下的所有键
正确表达式:
^[^=\[\]\n]+(?==[^\[\]]*\[)
所有 = 号前面的值
\S+(?=\s*=)
= 后面的值
(?<==).*$
(?<=\=).*$
正则表达式可以,但c++正则标准库不支持逆序环视