返回
正则表达式教程:Linux文件路径匹配
正则表达式
2024-02-28 15:49:44
一、正则解释
正则表达式:/^/(?:[^/]+/)*[^/]+$/
正则部分 | |
---|---|
^/ | 匹配以正斜杠 (/) 开头的字符串 |
(?:[^/]+/) | 匹配一个或多个不包含正斜杠 (/) 的字符,后面跟一个正斜杠 (/)。此部分可以重复出现0次或多次,表示路径中的目录分隔符 |
[^/]+$ | 匹配一个或多个不包含正斜杠 (/) 的字符,表示路径中的文件名 |
二、使用场景
此正则表达式可用于验证Linux文件路径是否有效。它可以检查路径是否以正斜杠开头,是否由目录和文件名组成,并且是否不包含任何无效字符,如正斜杠 (/)。
三、代码示例
JavaScript
const pattern = /^\/(?:[^/]+\/)*[^/]+$/;
const validPath1 = '/root/b.ts';
const validPath2 = '/root/abc';
const invalidPath = '/root/abc/../b.ts';
console.log(pattern.test(validPath1)); // true
console.log(pattern.test(validPath2)); // true
console.log(pattern.test(invalidPath)); // false
Java
import java.util.regex.Pattern;
public class LinuxFilePath {
private static final Pattern PATTERN = Pattern.compile("^/(?:[^/]+/)*[^/]+import java.util.regex.Pattern;
public class LinuxFilePath {
private static final Pattern PATTERN = Pattern.compile("^/(?:[^/]+/)*[^/]+$");
public static void main(String[] args) {
String validPath1 = "/root/b.ts";
String validPath2 = "/root/abc";
String invalidPath = "/root/abc/../b.ts";
System.out.println(PATTERN.matcher(validPath1).matches()); // true
System.out.println(PATTERN.matcher(validPath2).matches()); // true
System.out.println(PATTERN.matcher(invalidPath).matches()); // false
}
}
quot;);
public static void main(String[] args) {
String validPath1 = "/root/b.ts";
String validPath2 = "/root/abc";
String invalidPath = "/root/abc/../b.ts";
System.out.println(PATTERN.matcher(validPath1).matches()); // true
System.out.println(PATTERN.matcher(validPath2).matches()); // true
System.out.println(PATTERN.matcher(invalidPath).matches()); // false
}
}
PHP
$pattern = '/^\/(?:[^/]+\/)*[^/]+$/';
$validPath1 = '/root/b.ts';
$validPath2 = '/root/abc';
$invalidPath = '/root/abc/../b.ts';
if (preg_match($pattern, $validPath1)) {
echo "Valid path: $validPath1\n";
}
if (preg_match($pattern, $validPath2)) {
echo "Valid path: $validPath2\n";
}
if (!preg_match($pattern, $invalidPath)) {
echo "Invalid path: $invalidPath\n";
}
Python
import re
pattern = r'^/(?:[^/]+\/)*[^/]+import re
pattern = r'^/(?:[^/]+\/)*[^/]+$'
validPath1 = '/root/b.ts'
validPath2 = '/root/abc'
invalidPath = '/root/abc/../b.ts'
print(bool(re.match(pattern, validPath1))) # True
print(bool(re.match(pattern, validPath2))) # True
print(not bool(re.match(pattern, invalidPath))) # True
#x27;
validPath1 = '/root/b.ts'
validPath2 = '/root/abc'
invalidPath = '/root/abc/../b.ts'
print(bool(re.match(pattern, validPath1))) # True
print(bool(re.match(pattern, validPath2))) # True
print(not bool(re.match(pattern, invalidPath))) # True