Javascript正则表达式模式我发现更少:
/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/
特别是本节:
\\(?:[A-Fa-f0-9] {1,6}?| [^ A-Fa-f0-9])
答案 0 :(得分:1)
让我们从内到外,在必要时使用MDN作为参考:
(?:[A-Fa-f0-9] {1,6}?| [^ A-Fa-f0-9])
(?:)
是一个非捕获括号。它分组和匹配,但不保存结果。在该组内部是1-6个十六进制数字,后跟可选空格或除十六进制字符以外的任何字符。
(?:[\ w-] | \\ above
)+
同样,一个非捕获括号,这个时间为\w
,它是任何字母数字字符+ _,并且因为有[\w-]
,那就是“任何alphanum + -_”。然后是一个或一个\
字符,以及上面的字符。同时,这使得此括号组读为:“任何单个字母数字字符,下划线或连字符,或反斜杠后跟任何不是hexdigit或1到6个字符的十六进制字符串。” +
表示“至少有1个群组实例。”
<强> ^([#] above
)\ S *(强>
现在我们有^[#.]
,这意味着“该行必须以#或。开头,后跟上面的内容,任意数量的空格,后跟左括号。
<强> TL; DR:强>
当你全部添加时,你得到:
“以#
或.
开头的行后跟一个或多个:
后跟任意数量的空格,然后是(
“。
如果找到匹配项,则在空格和(
之前的整个部分都存储在搜索结果中。
答案 1 :(得分:1)
([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(