我有一个文件夹,它的名称是v3
。该文件夹中有 jsp 文件,v3 文件夹中也有一些文件夹,该文件夹中也有 jsp 文件。
我的 jsp 文件夹有一些链接,如下所示:
<link rel="stylesheet" href="/static/css/main.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="/css<s:text name="scripts"/>/general_styles.css">
<link rel="stylesheet" type="text/css" href="/v3/css<s:text name="scripts"/>/something.css" >
和脚本:
<script language="javascript" type="text/javascript" src="/static/scripts/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/scripts<s:text name="scripts"/>/prototype-1.6.0.2.js"></script>
<script language="javascript" type="text/javascript" src="/scripts<s:text name="scripts"/>/${a.name}/<s:text name="genericJs"/>"></script>
链接:
href
应以 /static/
开头例如,这是有效的:
<link rel="stylesheet" href="/static/css/main.css" type="text/css" />
对于脚本:
src
应以 /static/
开头例如,这也是有效的:
<script language="javascript" type="text/javascript" src="/static/scripts/jquery-1.4.2.min.js"></script>
我想要做什么,我想检测哪些文件有 not valid
定义。
编辑:有效 - 无效是我公司系统的一个概念。我们正在将 css 和 js 文件夹移动到另一个文件夹,它们将位于一个文件夹下,该文件夹的名称为 v3。
程序将像这样工作:
jsp
文件位于 v3 文件夹下。我将从任何地方运行该程序,它将检查该文件夹下的所有 jsp 文件(我将在编写的程序中定义该 v3 文件夹的整个路径)。它将找到所有以
<link
开头的行和<script
.如果是
<link
它会找到href="
如果是
<script
它会找到src="
找到其中一个后,它会检查它是否以
/static/
开头。或不。如果启动就可以,但如果不启动,它会将文件名写入输出/文本文件或其他任何内容。
最佳答案
您可以查看ack
,它是基于 Perl 的 grep
替代品,应该能够完成您想要的操作。
说实话,您不想在 [xht]ml 上进行模式匹配,您想使用解析器。使用 HTML::TokeParser
的 Perl 脚本可以找到所有具有特定属性的标签。
这是一个快速模型,但您可能需要一些更有用的输出:
#!/usr/bin/perl
use strict;
use warnings;
use File::chdir;
use Cwd 'abs_path';
use HTML::TokeParser;
my @paths = @ARGV;
my @files;
foreach my $path (@paths) {
local $CWD = $path;
opendir( my $dh, $CWD);
push @files, map { abs_path($_) } grep {/\.jsp$/} readdir $dh;
}
foreach my $file (@files) {
my $parser = HTML::TokeParser->new($file);
while (my $tag = $parser->get_tag("link", "script")) {
if ($tag->[0] eq "link" and exists $tag->[1]{'href'}) {
print "$file\n" unless $tag->[1]{'href'} =~ m#^/static/#;
} elsif ($tag->[0] eq "script" and exists $tag->[1]{'src'}) {
print "$file\n" unless $tag->[1]{'src'} =~ m#^/static/#;
}
}
}
关于java - 在文件夹下的文件中搜索有效模式? (也许使用 Perl 或使用 Java 的一些 API 或其他任何东西),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5418471/