Regex 正则表达式似乎忽略了制表符
我有一个正则表达式,它解析驱动程序inf文件中的行,只提取变量名和值,忽略以分号开头的空格和行尾注释 看起来是这样的:Regex 正则表达式似乎忽略了制表符,regex,Regex,我有一个正则表达式,它解析驱动程序inf文件中的行,只提取变量名和值,忽略以分号开头的空格和行尾注释 看起来是这样的: "^([^=\s]+)[ ]*=[ ]*([^;\r\n]+)(?<! )" “^([^=\s]+)[]*=[]*([^;\r\n]+)(?这两个[]*只匹配空格字符(U+0020空格),而不匹配其他空格字符。 将两者都更改为[\t]*以匹配选项卡。结果现在如下所示: "^([^=\s]+)[ \t]*=[ \t]*([^;\r\n]+)(?<! )" “^([
"^([^=\s]+)[ ]*=[ ]*([^;\r\n]+)(?<! )"
“^([^=\s]+)[]*=[]*([^;\r\n]+)(?这两个[]*
只匹配空格字符(U+0020
空格),而不匹配其他空格字符。
将两者都更改为[\t]*
以匹配选项卡。结果现在如下所示:
"^([^=\s]+)[ \t]*=[ \t]*([^;\r\n]+)(?<! )"
“^([^=\s]+)[\t]*=[\t]*([^;\r\n]+)(?我认为您刚才在错误的部分添加了\t
制表符
这是您的示例2(不起作用):
^([^=\s]+)[]*=[]*([^;\r\n]+)(?
这是您的示例2…工作(使用选项卡):
^([^=\s]+)[\t]*=[]*([^;\r\n]+)(?
似乎做到了这一点并与您的第一个示例相匹配:^([^=\s]+)\s*=\s*([^;\r\n]+)(?
试试这个。看演示
这修复了它,但为了一些不同的东西,我在第一部分尝试了“^([^\s]+)=”但它不起作用。我认为“^([^\s]+)=”的意思是“从字符串的开头开始,匹配所有不是空白的内容,直到找到文本“=”?@lembarts^([^\s]+)=
这不起作用,因为=
之前有空间
。因此没有任何东西可以占用空间,因为您已拒绝占用空间。因此它不起作用。
^([^=\s]+)[ ]*=[ ]*([^;\r\n]+)(?<! )
^([^=\s]+)[ \t]*=[ ]*([^;\r\n]+)(?<! )
^^ tab here
^([^=\s]+)\s*=\s*([^;\r\n]+)(?<!\s)