需要一个非常简单的正则表达式

Need a very simple Regualr Expression

我对 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\

之间的文本

例如,从第 3 行到第 6 行,您可以看到它以 \hline 开头,以 \ 结尾。我需要这些之间的文字。但我不知道得到它的确切正则表达式。我尝试了一些在网上找到的内容并进行了编辑,自从过去 2 天以来尝试过但失败了。

有人帮我给出正确的正则表达式吗?我正在与 PHP 合作。正则表达式应该 return 来自上面给定文本的 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