我很抱歉,我知道这是一个简单的问题,这在这里不合适,但我在regex
中很糟糕。
我使用带有(数字A)模式的preg_match
来匹配以下替换为子字符串
2A -> <i>2A</i>
100 A -> <i>100 A</i>
84.55A -> <i>84.55A</i>
92.1 A -> <i>92.1 A</i>
4 All
;
事实上,A
后面应该有一个空格或句号或换行符)我的问题是应用OR
条件来匹配可能存在与否的单个匹配的字符
$str = preg_replace($pattern, '<i>$1</i>', $str);
答案 0 :(得分:2)
我可以建议
'~\b(?<![\d.])\d*\.?\d+\s*A\b~'
请参阅regex demo。替换为'<i>$0</i>'
,其中$0
是整场比赛的反向引用。
<强>详情:
\b
- 领先word boundary (?<![\d.])
- 如果当前位置之前有一个点或数字,则negative lookbehind失败匹配(注意:这是为了避免匹配33.333.4444 A
类似字符串,只需删除没必要)\d*\.?\d+
- 通常的简化float / int值正则表达式(0+位数,可选.
和1+位数)(注意:如果您需要更复杂的正则表达式,请参阅{{ 3}})\s*
- 0+ whitespaces A\b
- 整个单词A
(此处,\b
是一个尾随单词边界)。