我需要解析一些文件并查找检测其中的所有文件路径。
现在,我使用这个表达式,它在99%的情况下有效:
(".*/.*?.[w:.]+)
但是,像这样:
someFunction("Default","Asset/NiceAssetTab/Lighting/MuchLighting.act")
它输出"Default","Asset/NiceAssetTab/Lighting/MuchLighting.act
我如何在不改变已经存在的功能的情况下改进我的正则表达式?
或者,如果更容易的话,这里是我试图检测的路径的一些细节:
- 以"开头
- 一个文件可以有多个扩展名:"file.png.tga.txt.oo ">
- 路径可以在文件夹名中有扩展名:"(…)
- 他们至少有一个";(扩展名)
谢谢:)
你可以将你的模式更新为:
"[^"/]*/[^"]*.[w:.]+"
模式匹配:
"
匹配开口处"
[^"/]*
匹配0+次任何字符,"
或/
除外/
匹配/
(如果分隔符不是/
,则不必转义正斜杠)[^"]*.
匹配除"
以外的任何字符,然后回溯到匹配结束处的第一个点[w:.]+
匹配1+次单词字符或:
或.
"
匹配关闭"
Regex演示
注意[w:.]+
也可能只匹配最后一个点之后的点,对于只匹配,您不需要周围的捕获组(...)
如果文件名可以包含word字符和:
,但不能以点结尾:
"[^"/]*/[^"]*.[w:]+(?:.[w:]+)*"
Regex演示