我对REGX非常感兴趣(实际上我几乎一无所知)。这是我的一周。但是我需要一个正则表达式,通过它我可以处理当前的项目。我的文字是这样的
\vspace{3pt} \noindent
\begin{tabular}{|p{464pt}|}
\hline
\parbox{464pt}{\raggedright
1
} \\
\hline
\parbox{464pt}{\raggedright
কত ভাগ পানি প্রক্সিমাল প্যাঁচানো নালিকায় শোষিত হয়?
} \\
\hline
\parbox{464pt}{\raggedright
4
} \\
\hline
\parbox{464pt}{\raggedright
৫৫\%
} \\
\hline
\parbox{464pt}{\raggedright
৪৫\%
} \\
\hline
\parbox{464pt}{\raggedright
৮০\%
} \\
\hline
\parbox{464pt}{\raggedright
৬৫\%
} \\
\hline
\parbox{464pt}{\raggedright
3
} \\
\hline
\end{tabular}
\vspace{2pt}
您可以看到它的乳胶。现在我需要的是获取\hline
和\\
例如,从第三行到第六行,您可以看到它以\hline
开头,以\\
结束。我需要这些之间的文字。但是我不知道确切的正则表达式。我尝试了一些在网上找到的内容,并对其进行了编辑,但自最近两天以来一直尝试失败。
这里有人帮助我提供正确的正则表达式吗?我正在使用PHP。正则表达式应从上面的给定文本返回8个文本数组。
您必须加倍转义反斜杠:
$in = <<<'EOD'
\vspace{3pt} \noindent
\begin{tabular}{|p{464pt}|}
\hline
\parbox{464pt}{\raggedright
1
} \\
\hline
\parbox{464pt}{\raggedright
কত ভাগ পানি প্রক্সিমাল প্যাঁচানো নালিকায় শোষিত হয়?
} \\
\hline
\parbox{464pt}{\raggedright
4
} \\
\hline
\parbox{464pt}{\raggedright
৫৫\%
} \\
\hline
\parbox{464pt}{\raggedright
৪৫\%
} \\
\hline
\parbox{464pt}{\raggedright
৮০\%
} \\
\hline
\parbox{464pt}{\raggedright
৬৫\%
} \\
\hline
\parbox{464pt}{\raggedright
3
} \\
\hline
\end{tabular}
\vspace{2pt}
EOD;
preg_match_all('/(?<=\\\\hline)(?:(?!\\\\\\\\)[\s\S])+(?=\\\\\\\\)/', $in, $m);
print_r($m);
输出:
Array
(
[0] => Array
(
[0] =>
\parbox{464pt}{\raggedright
1
}
[1] =>
\parbox{464pt}{\raggedright
কত ভাগ পানি প্রক্সিমাল প্যাঁচানো নালিকায় শোষিত হয়?
}
[2] =>
\parbox{464pt}{\raggedright
4
}
[3] =>
\parbox{464pt}{\raggedright
৫৫\%
}
[4] =>
\parbox{464pt}{\raggedright
৪৫\%
}
[5] =>
\parbox{464pt}{\raggedright
৮০\%
}
[6] =>
\parbox{464pt}{\raggedright
৬৫\%
}
[7] =>
\parbox{464pt}{\raggedright
3
}
)
)
说明:
(?<=\\\\hline) # positive lookbehind, make sure we have \hline before
(?: # non capture group
(?!\\\\\\\\) # negaive lookahead, make sure we haven't 2 backslashes
[\s\S] # any character, including linebreaks
)+ # end group, may appear 1 or more times
(?=\\\\\\\\) # positive lookahead, make sure we have 2 backslashes after