返回

正则表达式教程:Linux文件路径匹配

正则表达式

一、正则解释

正则表达式:/^/(?:[^/]+/)*[^/]+$/

正则部分
^/ 匹配以正斜杠 (/) 开头的字符串
(?:[^/]+/) 匹配一个或多个不包含正斜杠 (/) 的字符,后面跟一个正斜杠 (/)。此部分可以重复出现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