正则表达式排除子字符串
Regex to exclude substring
我想编写正则表达式:
- 传递以
/scripts/my_app/
开头的字符串(/scripts/my_app/xxxx.sh
或 /scripts/my_app/yyyyy/xxxz.sh
)
- 排除以
/scripts/
开头的其他字符串(/scripts/another_string/xxxx.sh
或 /scripts/some_string/yyyyy/xxxz.sh
)
- 传递任何其他字符串,例如
/xxxx/yyyy/zzzzz/qqqq.sh
或 /aaaa/bbbb/ccc.sh
像这样的东西 ^[(\/scripts\/my_app\/)|(?!\/scripts\/)].*
不起作用。
您可以使用
^/(?:scripts/my_app/|(?!scripts/)).*
说明
^/
字符串开始并匹配 /
(?:
非捕获组
scripts/my_app/
字面匹配
|
或
(?!scripts/)
否定前瞻,断言不是 scripts/
)
关闭非捕获组
.*
匹配任意字符 0+ 次
另一种选择是使用双重否定先行
^/(?!scripts/(?!my_app/)).*
我想编写正则表达式:
- 传递以
/scripts/my_app/
开头的字符串(/scripts/my_app/xxxx.sh
或/scripts/my_app/yyyyy/xxxz.sh
) - 排除以
/scripts/
开头的其他字符串(/scripts/another_string/xxxx.sh
或/scripts/some_string/yyyyy/xxxz.sh
) - 传递任何其他字符串,例如
/xxxx/yyyy/zzzzz/qqqq.sh
或/aaaa/bbbb/ccc.sh
像这样的东西 ^[(\/scripts\/my_app\/)|(?!\/scripts\/)].*
不起作用。
您可以使用
^/(?:scripts/my_app/|(?!scripts/)).*
说明
^/
字符串开始并匹配/
(?:
非捕获组scripts/my_app/
字面匹配|
或(?!scripts/)
否定前瞻,断言不是scripts/
)
关闭非捕获组.*
匹配任意字符 0+ 次
另一种选择是使用双重否定先行
^/(?!scripts/(?!my_app/)).*