需要一个非常简单的正则表达式
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
我对 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