如何解决perl和regex提取路径
我有一段文本/代码,我需要搜索include =,然后在\'= \'之后尝试获取整个路径,我尝试了几种方法,但似乎无法理解我的意思。我在代码/文本块中寻找:include=Y:\\default\\main\\tsconfig\\custom\\inline\\callouts\\search\\results.
假设这是正在搜索的xml:
<item name=\"Post Include Code\">
<value>
First section of content
include=Y:\\default\\main\\tsconfig\\tsconfig\\custom\\inline\\callouts\\search\\results.tpl
Second section of content
</value>
</item>
代码:
if ($includeText=~ s/include=(.*)$/\\1/) {
print \"$1\";
}
else {
print \"no path\";
}
我想最后加上end3ѭ,以便可以包含模板。文本/代码从另一个文件中提取。
谢谢!
解决方法
我对您的脚本及其工作方式进行了一些小的更改:
$include = \"include=Y:\\\\default\\\\main\\\\tsconfig\\\\custom\\\\inline\\\\callouts\\\\search\\\\results.\";
if ($include =~ m/include=(.*)$/) {
print \"$1\";
}
else {
print \"no path\";
}
, 抱歉,队友,我拿了您的脚本,使用了它,它正常工作。您的正则表达式没有问题,但其他代码(未显示)却没有错。
另外:有关您的问题的更多信息将非常有用。 \“我似乎无法理解……”并没有真正告诉我们发生了什么问题。
我的猜测是您没有使用:
use strict;
use warnings;
因此,您做了一些愚蠢的事情,例如:
while ($includetext = <DATA>) {
if ($includeText =~ s/...)
该脚本有效:
use warnings;
use strict;
while (<DATA>) {
if (s/include=(.*)$/$1/) {
print \"$1\";
}
else {
print \"no path\";
}
}
__DATA__
include=Y:\\default\\main\\tsconfig\\custom\\inline\\callouts\\search\\results.
, 我想这就是你要找的
#!/usr/bin/perl
use strict;
use diagnostics;
my $inc=\'include=Y:\\default\\main\\tsconfig\\custom\\inline\\callouts\\search\\results.tpl\';
if ($inc =~ m{include=([\\w\\:\\\\\\w /]+\\w+\\.\\w+)} )
{
print $1;
}
else
{
print \"no path\";
}
, 您不想包含\“ include = \”部分。您只需要后面的内容,因此必须用以下内容排除\“ include = \”部分:[^include=].*
(文本编辑器中的快速文本为我工作)。
, //编辑:
看几个例子后改正
这似乎有效,这与Raghuram的帖子相同。
if($includeText =~ m/include=(.*)$/){
print \"$1\";
}
else {
print \"no path\";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。