我正在运行RST到php转换并使用preg_match。
这是我想要确定的第一个:
An example of the **Horizon Mapping** dialog box is shown below. A
summary of the main features is given below.
.. figure:: horizon_mapping_dialog_horizons_tab.png
**Horizon Mapping** dialog box, *Horizons* tab
Some of the input values to the **Horizon Mapping** job can be changed
during a Workflow using the internal programming language, IPL. For
details, refer to the *IPL User Guide*.
我正在使用这个正则表达式:
$match = preg_match("/.. figure:: (.*?)(\n{2}[ ]{3}.*\n)/s", $text, &$result);
然而它返回为假。 这是一个关于正则表达式的表达式的链接 http://regex101.com/r/oB3fW7
答案 0 :(得分:2)
您确定换行符是\n
,有疑问,请使用\R
:
$match = preg_match("/.. figure:: (.*?)(\R{2}[ ]{3}.*\R)/s", $text, &$result);
\R
代表\n
,\r
和\r\n
答案 1 :(得分:0)
我的直觉是围绕s
标志以及通过引用传递的$result
变量进行一些故障排除。要实现相同而不受点和返回变量的干扰,请试试这个正则表达式:
..[ ]figure::[ ]([^\r\n]*)(?:\n|\r\n){2}[ ]{3}[^\r\n]*\R
在代码中,请尝试完全像这样:
$regex = "~..[ ]figure::[ ]([^\r\n]*)(?:\n|\r\n){2}[ ]{3}[^\r\n]*\R~";
if(preg_match($regex,$text,$m)) echo "Success! </br>";
<强>最后:强>
如果这不起作用,你可能有一个奇怪的Unicode换行符,php没有捕获。要调试,对于字符串的每个字符,遍历所有字符串的字符
foreach(str_split($text) as $c) {
echo $c . " value = "
. _uniord($c) . "<br />"; }