Regex 文件路径的正则表达式

Regex 文件路径的正则表达式,regex,unix,Regex,Unix,嗨,我需要一个正则表达式,它会给我类似这部分的东西 ./something\", [something.sh 像这根绳子之类的东西 ("./something\", [something.sh", ["./something\", [something.sh"], [/* 37 vars */]) 可能吗?我真的很难做到这一点,因为有“转义序列”和“,”字符,所以我不能简单地使用匹配所有字符而不是这些字符。 我在unix上工作,所以也可以使用少量grep或类似的管道。 感谢您的建议。对于Pe

嗨,我需要一个正则表达式,它会给我类似这部分的东西

./something\", [something.sh
像这根绳子之类的东西

("./something\", [something.sh", ["./something\", [something.sh"], [/* 37 vars */])
可能吗?我真的很难做到这一点,因为有“转义序列”和“,”字符,所以我不能简单地使用匹配所有字符而不是这些字符。 我在unix上工作,所以也可以使用少量grep或类似的管道。 感谢您的建议。

对于Perl,您可以使用它,它有一个类似于的提取函数来完成您需要的操作

您可以使用以下工具手动执行此操作:

 /"((?:\\.|.)*?)"/

基本上:从一个引号开始,如果你看到一个
\
,抓取下一个字符(即使它是引号),否则继续,直到你看到一个引号。

这并不能直接回答你的问题,但我的建议是首先让你的正则表达式快速工作,然后用你使用的任何语言编写代码

echo '("./something\", [something.sh", ["./something\", [something.sh"], [/* 37 vars */])' |
sed 's/.*\(\.\/something\\", \[something.sh"\).*/\1/'
此网站是我经常首先访问的一个网站,用于处理我的正则表达式:


它非常好,因为它也会显示分组。

您的输入看起来像Python文本。您可以按原样计算它:

$ echo '("./something\", [something.sh", ["./something\", [something.sh"], )' |\
> python -c'print input()[0]'
输出:

./something", [something.sh ./something", [something.sh 输出:

./something", [something.sh ./something", [something.sh
/某物“,[something.shIt完全可以使用各种工具中的任何一种。Perl、sed、awk、expr、Python——仅举五种——都可以做到。问题是“你还打算用它做什么?”这一问题的答案决定了什么是最有用的。这在很大程度上取决于这是一次性的,还是必须处理匹配模式的哪些变化这项工作很好,谢谢各位:)我真的非常感谢你们的帮助