Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用PERL创建从一个内容到另一个内容的标记_Regex_String_Perl - Fatal编程技术网

Regex 如何使用PERL创建从一个内容到另一个内容的标记

Regex 如何使用PERL创建从一个内容到另一个内容的标记,regex,string,perl,Regex,String,Perl,我的字符串1=“在第一代人中没有发现任何异常,因此,在第一代人中,我们的制度是在第一代人和第二代人之间建立的,在第一代人和第二代人中,我们的制度是在第一代人和第二代人之间建立的Sozialization,在kollektiven Wirsensbest和#x00E4;nde al s Teil der subjectiveen Wirklichkeit verinerlicht werden.以前的hierdurch werden die Institute in als tein is is

我的字符串1=“在第一代人中没有发现任何异常,因此,在第一代人中,我们的制度是在第一代人和第二代人之间建立的,在第一代人和第二代人中,我们的制度是在第一代人和第二代人之间建立的Sozialization,在kollektiven Wirsensbest和#x00E4;nde al s Teil der subjectiveen Wirklichkeit verinerlicht werden.以前的hierdurch werden die Institute in als tein is is is is Absolute wahrgenommen to Wirklichkeit angesehen.你是一个性格鲜明的人。Diesen Vorgang der der der der de Vergegenst和#x00E4;ndlichnt Berger/Luckmann Obj在自然、非冲突和非冲突的环境下,所有人都可以通过自己的努力来实现自己的目标。在历史上,这是一个伟大的历史rgibt,sowie die Autoritä;t der Bezugspersonen,die gesellschaftliche Instituteon,Norman and Verhaltensweisenü;bermitteln,fü;hren dabei zu einemregelkonformen Handeln der der der Nachcommmen(Berger/Luckmann 212007,62–72)。

我的字符串2=“regelkonformen Handeln der Nachkommen(Berger/Luckmann 2007,62-72)。”


您可以看到上面的两个sting,即string_2内容在string_1中可用,但唯一的区别是HTML标记

我想在string_1中匹配string_2,并且必须创建/复制string_1匹配区域中的标签到string_2内容中

有没有人能想出解决这个问题的办法

谢谢
Vimal

我将分两部分完成:查找和替换

1:查找匹配项,不考虑HTML标记(简单)

my$string\u 1=“在此处找到您的大字符串”;
my$string_2=“要查找的字符串”;
我的$match_str=$string_1;
#清理HTML标记以进行匹配
$match_str=~s!]*>!!地理信息系统;
#检查是否可以找到匹配项
如果($match_str=~m!$string_2!i){
打印“$string\u 2已找到\n”;
}
2:尝试提取原始字符串(硬)。这可能有效

use Data::Dumper;
my $string_1="your big  string <H1>to</H1> found here";
my $string_2="string to found";
my $se_string_2 = $string_2;
### replace every space with (?:\s*<[^>]*>\s*)+
$se_string_2 =~ s! !\(\?:\\s\*\<\[\^>\]\*\>\\s\*\)\+!gis;
print Dumper( $string_1,$string_2,$se_string_2);
#check if match could be found
while ($string_1 =~ s!($se_string_2)!!i){
   print "$string_2 found, string with tags: $1\n";
}
使用数据::转储程序;
my$string_1=“在此处找到您的大字符串”;
my$string_2=“要查找的字符串”;
my$se_string_2=$string_2;
###将每个空格替换为(?:\s*]*>\s*)+
$se_string_2=~s\(\?:\\s\*\]\*>\\s\*\)\+!地理信息系统;
打印转储程序($string_1、$string_2、$se_string_2);
#检查是否可以找到匹配项
而($string\u 1=~s!($se\u string\u 2)!!i){
打印“$string_2 found,string with tags:$1\n”;
}

我将分两部分完成:查找和替换

1:查找匹配项,不考虑HTML标记(简单)

my$string\u 1=“在此处找到您的大字符串”;
my$string_2=“要查找的字符串”;
我的$match_str=$string_1;
#清理HTML标记以进行匹配
$match_str=~s!]*>!!地理信息系统;
#检查是否可以找到匹配项
如果($match_str=~m!$string_2!i){
打印“$string\u 2已找到\n”;
}
2:尝试提取原始字符串(硬)。这可能有效

use Data::Dumper;
my $string_1="your big  string <H1>to</H1> found here";
my $string_2="string to found";
my $se_string_2 = $string_2;
### replace every space with (?:\s*<[^>]*>\s*)+
$se_string_2 =~ s! !\(\?:\\s\*\<\[\^>\]\*\>\\s\*\)\+!gis;
print Dumper( $string_1,$string_2,$se_string_2);
#check if match could be found
while ($string_1 =~ s!($se_string_2)!!i){
   print "$string_2 found, string with tags: $1\n";
}
使用数据::转储程序;
my$string_1=“在此处找到您的大字符串”;
my$string_2=“要查找的字符串”;
my$se_string_2=$string_2;
###将每个空格替换为(?:\s*]*>\s*)+
$se_string_2=~s\(\?:\\s\*\]\*>\\s\*\)\+!地理信息系统;
打印转储程序($string_1、$string_2、$se_string_2);
#检查是否可以找到匹配项
而($string\u 1=~s!($se\u string\u 2)!!i){
打印“$string_2 found,string with tags:$1\n”;
}
您可以尝试以下代码:

my @wordlist = split(/\s+/, $string_2);

s/([^\pN\pL])/sprintf("(?&sub)?%s(?&sub)?", quotemeta $1)/ge for @wordlist;

my $patterns = qr` (?(DEFINE)
       (?<sctag>   <(?!/)[^>]*+> )  # self closing tag
       (?<fctag>   </[^>]*+> )      # foreign closing tag
       (?<comment> <!-- .*? --> )
       (?<cdata>   \Q<![CDATA[\E .*? ]]> )
       (?<tag>     <(\w++)[^>]*+> (?> [^<]++ | (?&all)
                 | (?!</\g{-1})(?&fctag) )*+ </\g{-1}> )
       (?<all>     \s++ | (?&tag) | (?&comment) | (?&cdata) | (?&sctag) ) 
       (?<sub>     (?> (?&all) | (?&fctag) )++ )
                   ) `xsi;

my $search = join '(?&sub)', @wordlist;

if ($content =~ /$patterns (?<res>$search?)/xsi) {
    print "\n$+{res}";
} else {
    print "\nnot found";
}
my@wordlist=split(/\s+/,$string\u 2);
s/([^\pN\pL])/sprintf((?&sub)“%s(?&sub)”,quotemeta$1)/ge代表@wordlist;
my$patterns=qr`(?(定义)
(?]*+>)#自动关闭标签
(?]*+>)#外部结束标记
(?  )
(?\Q)
(?]*+>(?>[^您可以尝试以下代码:

my @wordlist = split(/\s+/, $string_2);

s/([^\pN\pL])/sprintf("(?&sub)?%s(?&sub)?", quotemeta $1)/ge for @wordlist;

my $patterns = qr` (?(DEFINE)
       (?<sctag>   <(?!/)[^>]*+> )  # self closing tag
       (?<fctag>   </[^>]*+> )      # foreign closing tag
       (?<comment> <!-- .*? --> )
       (?<cdata>   \Q<![CDATA[\E .*? ]]> )
       (?<tag>     <(\w++)[^>]*+> (?> [^<]++ | (?&all)
                 | (?!</\g{-1})(?&fctag) )*+ </\g{-1}> )
       (?<all>     \s++ | (?&tag) | (?&comment) | (?&cdata) | (?&sctag) ) 
       (?<sub>     (?> (?&all) | (?&fctag) )++ )
                   ) `xsi;

my $search = join '(?&sub)', @wordlist;

if ($content =~ /$patterns (?<res>$search?)/xsi) {
    print "\n$+{res}";
} else {
    print "\nnot found";
}
my@wordlist=split(/\s+/,$string\u 2);
s/([^\pN\pL])/sprintf((?&sub)“%s(?&sub)”,quotemeta$1)/ge代表@wordlist;
my$patterns=qr`(?(定义)
(?]*+>)#自动关闭标签
(?]*+>)#外部结束标记
(?  )
(?\Q)

(?]*+>(?>[^以下脚本将搜索字符串拆分为空白,然后在单词之间插入随机HTML的简化模式:

use strict;
use warnings;

my $string_1 = do {local $/; <DATA>};

my $string_2 = "regelkonformen Handeln der Nachkommen (Berger/Luckmann 2007, 62&#x2013;72).";

# Build a regex to match HTML interjected at whitespace
my $string2_re = join '(?:\s+|<(\w+)\b.*?</\g{-1}>)+', map quotemeta, split ' ', $string_2;

if ($string_1 =~ /($string2_re)/) {
    print "Matching = '$1'";
}

__DATA__
Noch befinden wir uns aber in der 1. Generation, 
so dass diese institutionalisierten Handlungsweisen nach wie vor durchschaubar 
und als menschliche Konstruktion ersichtlich sind. Der Institutionalisierungsvorgang 
endet erst im Zuge der <i>Internalisierung</i> der Folgegeneration durch die 
(Prim&#x00E4;r)sozialisation, in der die kollektiven Wissensbest&#x00E4;nde als Teil 
der subjektiven Wirklichkeit verinnerlicht werden. Erst hierdurch werden die Institutionen 
als Teil einer absolut wahrgenommenen objektiven Wirklichkeit angesehen. Sie erhalten 
dadurch objektiven Charakter. Diesen Vorgang der Vergegenst&#x00E4;ndlichung nennt 
Berger/Luckmann <i>Objektivation</i>. Der Eindruck eines menschlichen Erzeugnisses 
verschwindet. Die Institutionen werden als naturgegebene, unhinterfragbare und nicht 
ver&#x00E4;nderbare faktische Gegebenheiten angesehen, als kollektiv geteilte 
Wissensbest&#x00E4;nde. Die Autorit&#x00E4;t der Institution an sich, die sich aus ihrer 
historisch bedingten Faktizit&#x00E4;t ergibt, sowie die Autorit&#x00E4;t der 
Bezugspersonen, die gesellschaftliche Institutionen, Normen und Verhaltensweisen 
&#x00FC;bermitteln, f&#x00FC;hren dabei zu 
einem regelkonformen Handeln der <a sdj="asdas"><sup>saddfsdfsad</sup></a> Nachkommen (Berger/Luckmann <sup>21</sup>2007, 62&#x2013;72).
使用严格;
使用警告;
my$string_1=do{local$/;};
my$string_2=“regelkonformen Handeln der Nachkommen(Berger/Luckmann 2007,62&èx2013;72)。”;
#构建一个正则表达式以匹配在空白处插入的HTML

my$string2_re=join'(?:\s+|以下脚本将搜索字符串拆分为空白,然后在单词之间插入随机HTML的简化模式:

use strict;
use warnings;

my $string_1 = do {local $/; <DATA>};

my $string_2 = "regelkonformen Handeln der Nachkommen (Berger/Luckmann 2007, 62&#x2013;72).";

# Build a regex to match HTML interjected at whitespace
my $string2_re = join '(?:\s+|<(\w+)\b.*?</\g{-1}>)+', map quotemeta, split ' ', $string_2;

if ($string_1 =~ /($string2_re)/) {
    print "Matching = '$1'";
}

__DATA__
Noch befinden wir uns aber in der 1. Generation, 
so dass diese institutionalisierten Handlungsweisen nach wie vor durchschaubar 
und als menschliche Konstruktion ersichtlich sind. Der Institutionalisierungsvorgang 
endet erst im Zuge der <i>Internalisierung</i> der Folgegeneration durch die 
(Prim&#x00E4;r)sozialisation, in der die kollektiven Wissensbest&#x00E4;nde als Teil 
der subjektiven Wirklichkeit verinnerlicht werden. Erst hierdurch werden die Institutionen 
als Teil einer absolut wahrgenommenen objektiven Wirklichkeit angesehen. Sie erhalten 
dadurch objektiven Charakter. Diesen Vorgang der Vergegenst&#x00E4;ndlichung nennt 
Berger/Luckmann <i>Objektivation</i>. Der Eindruck eines menschlichen Erzeugnisses 
verschwindet. Die Institutionen werden als naturgegebene, unhinterfragbare und nicht 
ver&#x00E4;nderbare faktische Gegebenheiten angesehen, als kollektiv geteilte 
Wissensbest&#x00E4;nde. Die Autorit&#x00E4;t der Institution an sich, die sich aus ihrer 
historisch bedingten Faktizit&#x00E4;t ergibt, sowie die Autorit&#x00E4;t der 
Bezugspersonen, die gesellschaftliche Institutionen, Normen und Verhaltensweisen 
&#x00FC;bermitteln, f&#x00FC;hren dabei zu 
einem regelkonformen Handeln der <a sdj="asdas"><sup>saddfsdfsad</sup></a> Nachkommen (Berger/Luckmann <sup>21</sup>2007, 62&#x2013;72).
使用严格;
使用警告;
my$string_1=do{local$/;};
my$string_2=“regelkonformen Handeln der Nachkommen(Berger/Luckmann 2007,62&èx2013;72)。”;
#构建一个正则表达式以匹配在空白处插入的HTML

my$string2_re=join'(?:\s+|匹配的内容高亮显示…是否可能有嵌套的标记?是的!类似这样的内容(100)标记之间的内容永远不会在字符串_2中?是的!这就是我们必须创建/复制到字符串_2中的内容,方法是在字符串_1中匹配它,而不包含标记内容。匹配的内容会高亮显示…是否可能有嵌套的标记?是的!类似于(100)的内容标签之间的内容永远不会出现在string_2中?是的!这就是我们必须创建/复制到string_2中的内容,方法是在string_1中匹配它,而不包含标签内容。谢谢Casimir,但我在复制到编辑器时出错,请查看以下screenshot@user3354853链接:我只是更改脚本以避免这种匹配:“Wieder vereinigung”=>“Wieder vereinigung”和处理连续的标点字符。使用此代码,我可以在整个HTML文档的内容中找到一行,就像匹配字符串1和字符串2一样吗?@user3354853:我该怎么办