【发布时间】:2020-09-19 06:00:12
【问题描述】:
以下是我正在处理的正则表达式模式:
[\t\v\f ]*([^=\s]+)[\t\v\f ]*=[\t\v\f ]*([^=\s]+)[\t\v\f ]*(?:\r?\n\s*([^=\s]+)[\t\v\f ]*=[\t\v\f ]*([^=\s]+)\s*)*
它基本上尝试匹配 .ini 文件的单个部分中的键值对。因此,例如,它应该能够匹配下面的 整个 字符串:
"aa = 11\nbb = 22\ncc = 33"
我尝试在this 正则表达式匹配网站和其他一些网站上对其进行测试,它们似乎都匹配仅前两行。以下是匹配的样子(禁用全局标志):
但是,当我尝试强制正则表达式查找所有 3 行时,如下所示:
[\t\v\f ]*([^=\s]+)[\t\v\f ]*=[\t\v\f ]*([^=\s]+)[\t\v\f ]*(?:\r?\n\s*([^=\s]+)[\t\v\f ]*=[\t\v\f ]*([^=\s]+)\s*){2}
那么它似乎可以匹配整个字符串。
谁能给我一个很好的理由说明为什么上面的整个字符串与我的正则表达式不匹配?另外,我应该使用什么正则表达式来匹配字符串中的 all 键值对,就像我上面写的那样?
【问题讨论】:
-
如果你打开全局标志,你的第一个正则表达式就可以工作。不过,我还没有真正看过它。