如何选择匹配正则表达式中一行的开始^
或结束$
。
例如:
/(?<=[\s\^])/
与空格字符或行首开头不匹配。
根据要求,我的问题是在PHP中匹配以下内容。
$str = '**bold** **bold** **bold**';
echo preg_replace('/(?<=\s|^)\*\*(.+?)\*\*(?=\s|$)/', '<strong>\\1</strong>', $str);
我的边缘情况是字符串的开头和结尾处的粗体没有匹配。我遇到的其他变体的一些边缘情况是在字符串中匹配,匹配星号链和无数其他问题。
echo preg_replace('/(?<=^|\s|\>)[\*]{2,}(?=[^\s\*])(.+?)(?<=[^\s\*])[\*]{2,}(?=\s|\<|$)/', '<strong>\\1</strong>', $str);
答案 0 :(得分:4)
如果您坚持在空白字符之后进行匹配,或者行开头,请使用alternation(而不是character class)。假设你的正则表达式支持lookbehind assertions中的替换。
/(?<=\s|^)\w+/m
但您可能正在寻找word boundary \b
?它们匹配单词的开头或结尾。 (完全取决于从单词字符到非单词字符的变化或反之亦然)
您应该向我们提供更多信息:语言,输入和预期结果(包括角落案例)。
答案 1 :(得分:0)
只需移除锚点即可。如果没有锚点,正则表达式将匹配您正在搜索的字符串中的任何位置。
答案 2 :(得分:0)