我正在尝试匹配来自 html 的字符。有三种类型的and:
and, &, &
我正在使用以下代码:
(&|&|\band\b)
上面代码的问题是:它也匹配以 & 开头的单词
i.e. © €
我也尝试了以下方法,但它与文本中行首和行尾的 & 字符不匹配。
(\s&\s|&|\band\b)
怎么样
(&)|&(?!\w)|\band\b
比赛and
, &
,&
不匹配©
€
中间的匹配一个不带单词字符 ( [A-Za-z0-9_]
)的 & 号
(&|&|\band\b)
是一个好的开始。继续减少结果集,当不匹配时,您将不得不指定详细信息。没有神奇的分隔符可以告诉正则表达式你想要什么。所以问题是:你怎么能从那些你不想接受的人中分辨出你想接受的'& '?
如果不开始一个单词,也许你想接受所有的'&' ?所以:
(&[^a-zA-Z]|&|\band\b)
试试这个正则表达式:
$regex = '/\b((\&(amp;)?)|(and))\b/i';