2
我有* TEX文件包含:列表需要检查每一个在一个字符串
__DATA__
"\left({H^1}, \int {H^2}\right)"
"\left({H^1},\bigoplus{H^2}\right)"
"\left({H^1},{H^2}\right)"
"\left({H^1}, \bigvee {H^2}\right)"
上面* TEX内容我要检查我所下面列出的数组元素的列表:如果任何一个元素匹配,然后保留该行:如果没有一个元素匹配,那么我需要将\left(
替换为(
和\right)
,并将其替换为)
。
我的数组:
int frac prod sum oint bigvee bigcup bigcap bigoplus bigotimes
预期输出:
"\left({H^1}, \int {H^2}\right)"
"\left({H^1},\bigoplus{H^2}\right)"
"({H^1},{H^2})"
"\left({H^1}, \bigvee {H^2}\right)"
我曾尝试:
my @mathenv = qw(int frac prod sum oint bigvee bigcup bigcap bigoplus bigotimes);
while(<DATA>) { $mathchk .= $_; }
$boolChk = 'False';
$mathchk=~s#\\left\(((?:(?!\\(?:left|right)).)*)\\right\)# my $fulcnt=$&; my $Content=$1;
foreach my $singlemath(@mathenv)
{
\#print "S: -$singlemath-\n";
if($fulcnt=~m/\\$singlemath/gi)
{ $boolChk = 'True'; }
}
print ": $boolChk \t$fulcnt\n"; system 'pause';
if($boolChk eq 'True') { }
if($boolChk eq 'False') { $fulcnt = "\($Content\)"; }
($fulcnt);
#esg;
#print $mathchk;
__DATA__
"\left({H^1}, \int {H^2}\right)"
"\left({H^1},\bigoplus{H^2}\right)"
"\left({H^1},{H^2}\right)"
"\left({H^1}, \bigvee {H^2}\right)"
我能不能够得到正确的输出,因此,如果有人指导我在哪里我必须修改上面的代码。提前致谢。