我正在使用以下内容来查找ID的实例,例如X.123:
$regex_id = "/\b[Xx][\.][0-9]{1,4}\b/";
preg_match_all($regex_id, $html, $matches_id, PREG_SET_ORDER);
匹配的ID将转换为某些存储的文本。这部分效果很好,但我需要添加一些功能。现在一些ID将用双括号括起来,例如[[X.123]],我需要匹配独立ID或括号内的ID。
独立ID将替换为一些文本(例如:X.123 >> MyText
)
括号内的ID将替换为图像(例如:[[X.123]] >> <img src='mypic.png'>
。
我需要注意如何完成此操作,因此我不会将[[X.123]]
替换为[[MyText]]
。正如Jason McCreary所说,我可以简单地命令这两个表达式虽然这可能不是最好的方法。
这是与括号内的ID匹配的正确表达式吗?
\[\[[Xx][\.][\s][0-9]{1,4}\]\]
答案 0 :(得分:4)
天真的方式是两次通过。
[[X.123]]
X.123
我只需使用数组调用preg_replace()
来搜索/替换参数,就可以这样做。
<强>更新强>
[[X.###]]
的正则表达式为:
\[\[[Xx]\.\d{1,4}\]\]
答案 1 :(得分:0)
这是正确的表达式,以匹配括号内的ID吗?
\ [\ [[XX] [\] [\ s]的[0-9] {1,4} \] \]
那里有不必要的角色。
\[\[[Xx]\.[0-9]{1,4}\]\]
修改强>
...这将与仅限括号的版本相匹配。如果您需要匹配:
(?:\[\[)?[Xx]\.[0-9]{1,4}(?:\]\])?
...如果/匹配时,它们不会创建对括号的反向引用。这里可能存在的一个问题是,您在一侧或另一侧匹配括号但不是两者。 LMK,如果你需要它比那更严格。
干杯
答案 2 :(得分:0)
(\[\[)?[Xx]\.[0-9]{1,4}(\]\])?