我想匹配包含关键字的所有路径,build
除非它们还包含.html
这是一个使用负前瞻的工作正则表达式:https ://regexr.com/4msck
我正在使用正则表达式进行一致的路径匹配,它不支持负前瞻。如何在没有负前瞻的情况下复制上述正则表达式的功能?
我想匹配包含关键字的所有路径,build
除非它们还包含.html
这是一个使用负前瞻的工作正则表达式:https ://regexr.com/4msck
我正在使用正则表达式进行一致的路径匹配,它不支持负前瞻。如何在没有负前瞻的情况下复制上述正则表达式的功能?
这是可能的,但生成的正则表达式在可读性和可维护性方面非常差。
^(?:[^\.\n]|\.(?:$|[^h\n]|h(?:$|[^t\n]|t(?:$|[^m\n]|m(?:$|[^l\n])))))*build(?:[^\.\n]|\.(?:$|[^h\n]|h(?:$|[^t\n]|t(?:$|[^m\n]|m(?:$|[^l\n])))))*$
解释:
^
- 字符串/行的开始(?:[^\.\n]|\.(?:$|[^h\n]|h(?:$|[^t\n]|t(?:$|[^m\n]|m(?:$|[^l\n])))))*
- 匹配任何不包含.html
build
- 从字面上看那个字符串(?:[^\.\n]|\.(?:$|[^h\n]|h(?:$|[^t\n]|t(?:$|[^m\n]|m(?:$|[^l\n])))))*
- 和之前一样$
- 字符串/行结束根据手册,这应该有效。它基于评论:“我想忽略构建目录中的所有文件,除了 html 文件”
ignore = Regex .*build.*
ignorenot = Name {*.html}
我不熟悉unison
,所以我必须假设您可以指定超过 1 条规则的路径。
由于手册中的这句话,我有这个期望:
还有一个ignorenot首选项,它为不应忽略的路径指定一组模式,即使它们与忽略模式匹配。