美文网首页
正则表达式的捕获组和细节

正则表达式的捕获组和细节

作者: codeflame | 来源:发表于2018-03-16 21:39 被阅读0次

    通用的:

    如"((a)(b)) c":引用捕获语法:用反斜杠+第几捕获,0是整个结果,括号的捕获从1开始算,顺序以左括号顺序为准,上面中 \0=abc,\1=ab,\2=a,\3=b
    因此如"(a)(b)\1\1\2" 将匹配"abaab"

    前瞻后顾:

    前瞻:"ab(?=c)",匹配abcd中的ab,不匹配abd中的ab。c不被匹配,只是要求匹配的ab后面必须是c
    负前瞻:"ab(?!c)",类似。要求匹配的ab后面不能有c,即与上面相反
    后顾:"(?<=c)ab",类似。要求ab前有c
    负后顾:"(?<!c)ab",类似。要求ab前没有c

    私货:

    visual studio/visual studio code的ctrl+h替换中,若替换内容使用捕获组,用美元符号'$'代替反斜杠''。其次,它不支持后顾,只有前瞻

    转义问题:

    你的书写         运行时          当作正则时
    \n              换行符            换行符
    \\n             \n               换行符
    \\\\n           \\n              \n
    

    即作正则时,正则处理中会再转义一次,算上默认的作字符串时的转义,一共把你的输入转义两次。

    相关文章

      网友评论

          本文标题:正则表达式的捕获组和细节

          本文链接:https://www.haomeiwen.com/subject/cunrqftx.html